【问题标题】:Async function in express middleware: unhandledRejection - response is not defined快速中间件中的异步函数:unhandledRejection - 未定义响应
【发布时间】:2018-04-17 14:51:18
【问题描述】:

我不断收到错误: 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");
  }
}

我希望异步函数通过 await 功能处理一些承诺。 我看到 then / console.log(data) 被调用,但随后触发了上述错误。

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

问候, 伯特

【问题讨论】:

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


    【解决方案1】:

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

    我现在可以安装包了。

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

    【讨论】:

      【解决方案2】:

      你在第二行写错了你写的mymiddleware而不是写myMiddleware

      代码不正确

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

      正确的代码

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

      【讨论】:

      • 谢谢。更改了它,但代码只是一些简化的示例代码。
      • @BertDeterd 如果它有效,那么请给答案​​投票
      猜你喜欢
      • 2017-05-20
      • 2020-12-08
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 1970-01-01
      • 2018-12-25
      • 1970-01-01
      • 2020-07-19
      相关资源
      最近更新 更多