Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Express.js中的错误处理中间件返回自定义消息时出现问题_Node.js_Express - Fatal编程技术网

Node.js Express.js中的错误处理中间件返回自定义消息时出现问题

Node.js Express.js中的错误处理中间件返回自定义消息时出现问题,node.js,express,Node.js,Express,我有以下代码。有一个错误处理中间件,当我在浏览器上打开localhost:3000时,它会被调用,但响应永远不会是“系统暂时不可用”。相反,我会得到错误消息“我的自定义错误”以及完整的堆栈跟踪 如果出现未处理的错误,express将调用错误中间件,我的理解是否不正确/ 代码 您需要在其他app.use()和routes调用之后,最后定义错误处理中间件 app.use(会话)({ 秘密:process.env.ExpressSecret, saveUninitialized:true, resav

我有以下代码。有一个错误处理中间件,当我在浏览器上打开localhost:3000时,它会被调用,但响应永远不会是“系统暂时不可用”。相反,我会得到错误消息“我的自定义错误”以及完整的堆栈跟踪

如果出现未处理的错误,express将调用错误中间件,我的理解是否不正确/

代码


您需要在其他app.use()和routes调用之后,最后定义错误处理中间件

app.use(会话)({
秘密:process.env.ExpressSecret,
saveUninitialized:true,
resave:是的
}),passport.initialize(),passport.session())
app.get(“/”,(请求,响应)=>{
抛出新错误(“我的自定义错误”);
});
应用程序使用((错误、请求、恢复、下一步)=>{
控制台错误(错误堆栈);
json({error:'系统暂时不可用'});
});

let express = require('express');
let app =  express(); 
let pug = require('pug');
let session = require('express-session');
let passport = require('passport');
require('dotenv').config();


app.listen(3000,"",()=>{
    console.log('server started');
}); 

// set express properties. these properties can be had anywhere in the code
app.set('title','Sample application using Express, Expression session, Pug, Socktet and Passport');

// for pug
app.set('view engine','pug');
app.set('views','./pages'); 

console.log(process.env.ExpressSecret);
console.log(process.env.Port);

// use the express session to se the cookie, 
// use function can take a series of middlewares 
app.use( session({
      secret: process.env.ExpressSecret,
      saveUninitialized:true,
      resave:true
  }),passport.initialize(),passport.session())

app.use((err, req, res,next) => {
    console.error(err.stack);
    res.status(500).json({ error: 'system is unavailable for the moment' });
  });

app.get('/',(request, response)=>{     
    throw new Error('my custom error');               
});