我正在使用 express 4 来创建 json API 服务。 我似乎无法将其定义为发送一个简单的 json 而不尝试渲染 View 。
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);
};
当我访问路线时,它是
Error: Failed to lookup view "error" in views directory "/Volumes/api_service/init/views"
我试图一起删除 View 引擎
//app.set('views', path.join(__dirname, 'views'));
//app.set('view engine', 'jade');
但它会因为这个错误而大喊大叫
No default engine was specified and no extension was provided
最佳答案
如果您正在对 res.render
进行任何调用,例如在由“快速生成”生成的错误处理程序中,那么您将看到您描述的错误。对于 json API 服务,你可能不需要渲染任何东西,所以不要调用 render()
,而是调用带有状态 res 的 res.send()
。状态设置为 404 或 500。
所以基本上,替换这个:
app.use(function(err, req, res, next) {
res.render('error', {
message: err.message,
error: err
});
});
用这个:
app.use(function(err, req, res, next){
res.status(err.status || 500);
res.send({
message: err.message,
error: err
});
return;
});
关于node.js - 表达 js 4 如何在不渲染任何 View /css 的情况下提供 json 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23296031/