Web*_*ube 18 routing node.js express
我正在使用express 4来创建一个json API服务.我似乎无法定义它来发送一个简单的json而不试图渲染视图.
var express = require('express');
var router = express.Router();
module.exports = function (app, namespace) {
router.get('/', function(req, res) {
res.json({'body': 123});
});
app.use(namespace + '/v1', router);
};
Run Code Online (Sandbox Code Playgroud)
当我访问路线时
Error: Failed to lookup view "error" in views directory "/Volumes/api_service/init/views"
Run Code Online (Sandbox Code Playgroud)
我试图一起删除视图引擎
//app.set('views', path.join(__dirname, 'views'));
//app.set('view engine', 'jade');
Run Code Online (Sandbox Code Playgroud)
但是它会因为这个错误而大叫
No default engine was specified and no extension was provided
Run Code Online (Sandbox Code Playgroud)
小智 34
如果您正在res.render
通过'express generate'生成的错误处理程序中进行任何调用,那么您将看到您描述的错误.对于json API服务,您可能不需要呈现任何内容,因此只需不要调用render()
,而是调用res.send()
res.status状态设置为404或500.
所以基本上,替换这个:
app.use(function(err, req, res, next) {
res.render('error', {
message: err.message,
error: err
});
});
Run Code Online (Sandbox Code Playgroud)
有了这个:
app.use(function(err, req, res, next){
res.status(err.status || 500);
res.send({
message: err.message,
error: err
});
return;
});
Run Code Online (Sandbox Code Playgroud)
最终它是快速通用捕获404,使所有路线不可用.
Run Code Online (Sandbox Code Playgroud)app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); });
删除他解决了它.
归档时间: |
|
查看次数: |
10564 次 |
最近记录: |