快速中间件中的异步函数:unhandledRejection - 未定义响应

时间:2017-11-05 09:29:48

标签: node.js express asynchronous async-await middleware

我一直收到错误: UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:2):ReferenceError:未定义响应

我有一个这样的快速中间件(简化):

 const myMiddleware = require('./mymiddleware');
 router.use(myMiddleware);

然后在文件./mymiddleware.js

module.exports = setup;

function setup(req, res, next) {
  try {
    execute()
      .then(data => {
        req.host = data;
        console.log(data);
        next();
      })
      .catch(() => {});
  } catch (e) { next('error') }
}

async function execute() {
  try {
    const host = getHost();
    ......
    return host;

  } catch (e) {
    return new Error("x");
  }
}

我希望async函数能够使用 await 功能处理一些承诺。 我看到调用了then / console.log(数据),但随后触发了上述错误。

异步函数可以与快速中间件一起使用吗?

此致 伯特

2 个答案:

答案 0 :(得分:2)

您在第二行写了一个拼写错误mymiddleware而不是写myMiddleware

代码不正确

 const myMiddleware = require('./mymiddleware');<br>
 router.use(mymiddleware);

正确的代码

 const myMiddleware = require('./mymiddleware');<br>
 router.use(myMiddleware);

答案 1 :(得分:0)

我安装了以前版本的node.js(8.9.0&gt; 7.6.0)。

我现在可以安装包。

当@ sap / xssec的新版本发布时,我将更新节点版本并查看它是否已修复