node.js - 表达 js 4 如何在不渲染任何 View /css 的情况下提供 json 结果

标签 node.js express routing

我正在使用 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/

相关文章:

angular - ASP.NET MVC5 应用程序捕获所有路由被忽略

routing - 如何重定向到位于 HAProxy 后面的多个服务器,这些服务器具有不同的路径开头

php - 尝试在 laravel 上运行 gulp 时出现错误

基于键和值分组的 JavaScript 对象数组

node.js - 如何在surge.sh上部署Express应用程序

session - express:session store,查询session key redis

node.js - 构建成功。发布失败, "Class constructor Parser cannot be invoked without ' new'"

node.js - 在服务器端使用 node.js + express.js 在 SPA(单页应用程序)中动态生成内容的 SEO

node.js - 多个 NodeJS 服务器的多个 redis 实例

ruby-on-rails - rails : possible to restrict a route based on IP address (or range? )