首页 > 解决方案 > Express中不允许等待吗?

问题描述

谁能解释我为什么会得到

SyntaxError: await is only valid in async function

从下面,因为我在函数await内部使用async

(async function(){
  'use strict';

  const express = require("express");
  const bodyParser = require("body-parser");
  const app = express();
  app.use(bodyParser.json());

  app.post("/", (req, res) => {
    await console.log('a');
    res.status(200).end();
  });

  app.listen(config.webhook_port, () => console.log("Listening"));
})();

上面是一个简化版的 webhook 监听器,可以同时获取多个 webhook。所以console.log()在代码中使用 只是为了模拟一个会被调用的函数。因此,内部app.post()将有逻辑来决定如何处理每个收到的 webhook。

我想使用的原因await是我可以检查函数的返回值。

标签: javascriptnode.jsexpressecmascript-6

解决方案


删除外部异步,然后编写:

app.post("/", async (req, res) => {
    await console.log('a');
    res.status(200).end();
  });

推荐阅读