2017-10-16 56 views
0

平均服務器角度爲2+。 我有一個dataservice.js,請求到服務器,以接收來自http://localhost:3000/server/routes/api/test.js json響應這給我一個錯誤沒有選擇500視圖引擎, 我的理解是角度不需要視圖引擎?由於角度/瀏覽器需要照顧。有效的json格式給出錯誤「<」,同時解析也使用平均堆棧角度查看引擎錯誤500 2+

不知怎的,路由似乎不工作,當我做api的getter。

角度路由與html組件一起工作,但是通過dataservice獲得對mongodb的請求也不起作用。 get/test通常返回錯誤500,並且沒有選擇視圖引擎。

如果確實返回了某個內容,它將返回一個不是jsn格式的錯誤消息「<」。

如何確保路由對我的get和post消息起作用,並且它們以json格式而不是以HTML格式返回。 我怎麼知道它使用正確的路由?我以某種方式懷疑get/post消息的rouitng似乎使用express而不是角度模塊

我對堆棧溢出/平均服務器相當陌生,所以如果您需要更多信息,請告訴我。

FYI 我已經能夠從服務器(而不是數據庫)通過get獲取json文件。這工作。那麼爲什麼到數據庫似乎不工作,以及爲什麼我似乎無法從api中的http://localhost:3000/server/routes/test/api.js獲得json響應。

我花了整整2天的時間排除故障,沒有任何結果。

in my api.js 

router.get ('/test', function (req, res, next) { 
res.json({'testMessage': 'everything is going ', 'someNumber': 457}); 
    }); 

在server.js

<!-- end snippet --> 
    <!-- begin snippet: js hide: false console: true babel: false --> 
    <!-- language: lang-js --> 
    var express = require('express'); 
    var path = require('path'); 
    var favicon = require('serve-favicon'); 
    var logger = require('morgan'); 
    var bodyParser = require('body-parser'); 
    var morgan = require ('morgan'); 
    var mongoose = require('mongoose'); 
    var flash = require('connect-flash'); 
    var chat = require('./server/routes/chat'); 
    var app = express(); 

    var passport = require ('passport'); 
var cookieParser = require ('cookie-parser'); 
var session = require ('express-session'); 
var config = require ('./config/database'); 
var engines = require('consolidate'); 
var mongoose = require('mongoose'); 
var router = express.Router(); 
// this is where I set up the routing for the api 
// in the root of the project I created server directory and 
// within it a routes directory that holds the api.js 
var api = require('./server/routes/api'); 


mongoose.Promise = require ('q').Promise; 

require('./config/passport')(passport); 
app.use(logger('dev')); 

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({'extended':'true'})); 
app.use(express.static(path.join(__dirname, 'dist'))); 
app.use(express.static(path.join(__dirname, 'public'))); 
app.use(cookieParser()); 
app.use(morgan('dev')); 
app.use(session({ 
secret: 'secret123', 
resave: true, 
saveUnitialized: true 
})); 
app.use(passport.initialize()); 
app.use(passport.session()); 
app.use(flash()); 
//this is where I set up the routing is something wrong here? 

app.get('*', (req, res) => { 
res.sendFile(path.join(__dirname, 'dist/index.html')); 
}); 
app.use('api', api); 
+0

您是否嘗試過直接從瀏覽器使用API​​?由於它是GET調用,因此您可以將該URL發佈到搜索地址並檢查結果。看起來這個問題並不在你的Angular代碼中,而是在你的API實現中,但你應該驗證它。 –

+0

我在瀏覽器中檢查過它,它通常會返回500錯誤,但從來沒有從josn文件得到任何結果,我在查看調試器時看到了html輸出。醫生會幫助我嗎?只要閱讀這篇文章:https://stackoverflow.com/questions/30216583/how-to-enable-cors-in-mean-stack-web-app。無法使用cors或專門添加.json來解決我的問題。 – oudekaas

+0

這告訴我們這個問題在服務器端。使用調試器,或查看日誌以瞭解想法。 –

回答

0

THX大家好,我感動

app.get('*', (req, res) => { 
res.sendFile(path.join(__dirname, 'dist/index.html')); 
}); 

下面

app.use('api', api); 

,並把它改爲:

app.use('/api', api); 

問題解決了,如果首先讀取app.get('*'),它會將所有請求發送到index.html。所以確保其他路線超出它。