我正在使用Node.js Express构建一组RESTful API服务,当遇到错误时,将在堆栈跟踪之前加上以下内容:
错误:未指定默认引擎,也未提供扩展名。
我已经阅读了几篇关于“堆栈溢出”的文章,内容涉及app.js中用于处理错误的预期代码:
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
但是,对于默认引擎,StackOverflow建议重点在于将Vue与Jade结合使用。
这是内部RESTful API服务,我希望不要在Jade中添加默认的引擎输出错误响应。
建议?
这是来自我的RESTful API服务的示例堆栈跟踪:
[09:22:42] info: GET /api/v1/archives/google/folders 401 130ms
Error: No default engine was specified and no extension was provided.
at new View (/Users/jeff/github/jeff00/act-archive/node_modules/express/lib/view.js:61:11)
at Function.render (/Users/jeff/github/jeff00/act-archive/node_modules/express/lib/application.js:570:12)
at ServerResponse.render (/Users/jeff/github/jeff00/act-archive/node_modules/express/lib/response.js:1008:7)
at /Users/jeff/github/jeff00/act-archive/app.js:137:7
at Layer.handle_error (/Users/jeff/github/jeff00/act-archive/node_modules/express/lib/router/layer.js:71:5)
答案 0 :(得分:2)
您正在使用res.render
调用,因为Express希望为此应用程序设置一个渲染引擎。删除res.render
并执行类似res.json
的操作,就不会出现此错误。