有效的json格式给出错误“<”,同时使用平均堆栈角度2+解析查看引擎错误500

时间:2017-10-16 23:53:45

标签: html json angular mean-stack

具有角度2+的平均服务器。 我有一个dataservice.js请求到服务器,从http://localhost:3000/server/routes/api/test.js接收json响应 这给了我一个未选择的错误500视图引擎, 我的理解是角度不需要视图引擎?由于角度/浏览器负责这一点。

当我对api做一个getter时,路由似乎不起作用。

角度路由使用html组件,但是通过dataservice,对mongodb的get请求也不起作用。 get / test最常返回错误500,也没有选择视图引擎。

如果确实返回了某些内容,则会返回错误消息“<”而不是jsn格式。

如何确保路由适用于我的get和post消息,它们以json格式返回,而不是以HTML格式返回。 我怎么知道它使用正确的路由?我以某种方式怀疑get / post消息的rouitng似乎使用express而不是angular模块

我是堆栈溢出/均值服务器的新手,所以如果您需要更多信息,请告诉我。

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);

1 个答案:

答案 0 :(得分:0)

大家好,我感动了

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

下面

app.use('api', api);

并将其更改为:

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

问题解决了,如果先读取app.get(&#39; *&#39;),它会将所有请求发送到index.html。所以要确保任何其他路线都高于它。