0

我将 NodeJS 与 express 一起使用。我将会话存储到 MySQLStore (express-mysql-session) 我的问题是如何处理连接错误?当它无法连接时,我想向用户呈现一个页面,而不是“错误:在 TCPConnectWrap.afterConnect [as oncomplete] 处连接 ECONNREFUSED 127.0.0.1:3306 [as oncomplete] (node:net:1137:16) ..... “ 信息。

我的代码:

const MySQLStore = require('express-mysql-session')(session);
(....)
app.use(session({
  secret: 'something',
  resave: false,
  saveUninitialized: false,
  store: new MySQLStore({
    host: something,
    user: something,
    password: something,
    database: something
  }),
  cookie: {
    maxAge: 7 * 24 * 60 * 60 * 1000
  }
}));

使用简单的 mysqljs,我可以轻松地做到这一点,因为当我使用 connection.query 时,有一个 (error, result) => { ... } 我可以处理错误,但在这个 MySQLStore 我不知道如何处理连接错误。

4

1 回答 1

0

解决了这个问题,一个 Express 错误处理程序中间件也可以捕获这个错误。只需将其粘贴到 app.listen 之前的应用程序末尾即可。

app.use((error, req, res, next) => {
  res.status(error.status || 500).render('error', { 
    msg: 'Please check back later!'
  });
});

请注意,即使我们不使用 next 参数,也需要它,因为错误处理函数在 express 中有四个参数。如果您删除它,它将无法正常工作。

于 2021-05-08T21:38:50.383 回答