【问题标题】:Is await not allowed in Express? [closed]Express中不允许等待吗? [关闭]
【发布时间】:2021-06-08 07:50:15
【问题描述】:

谁能解释我为什么会这样

SyntaxError: await is only valid in async function

从下面看,因为我在 async 函数中使用 await

(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,是为了检查函数的返回值。

【问题讨论】:

  • async (req, res) => {?
  • express 是一个 JavaScript 库。它不能改变语言语法。这根本不可能。您在本地箭头函数中使用await,它不是异步的。
  • 传递给 app.post 的函数是一个回调,这意味着它将在稍后调用。而且这个函数不是异步的。

标签: javascript node.js express ecmascript-6


【解决方案1】:

去掉外层异步,然后写:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-11
    • 2021-02-12
    • 1970-01-01
    • 2021-09-11
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多