小编Aza*_*dra的帖子

在 Node v14.14.0 中使用顶级 await 功能时,“SyntaxError:await 仅在异步函数中有效”

我正在尝试使用 Node v14.8 中添加的新顶级 await。请参阅此处此处了解更多信息。我没有在这里找到有关使用此新功能的问题的问题,但我希望这不是重复的。最接近的是@DanStarns 对这个问题的回答,但我也尝试过他的解决方案(他的回答是在 14.8 版本之前)。

  • 我知道 IIFE 过去一直是首选的解决方法之一,但这个问题与新的顶级 await 功能有关,以及为什么尽管已随 Node 14.8 发布但仍会引发错误

我正在将我的 Axios 实例从我的控制器中提取到一个独立的服务中。在该服务文件中,我尝试实例化然后导出使用 Spotify API 中存储的授权标头创建的 Axios 实例。由于然后将其导入我的控制器(传递到构造函数然后导出new SpotifyApiController(SpotifyApiService))并且导入是同步的,因此我尝试使用新的顶级 await 功能在启动/导入时完全实例化它,但收到以下错误:

[nodemon] starting `babel-node bin/www.js --harmony-top-level-await --experimental-repl-await`
E:\projects\harmonic-mixing-companion\server\services\SpotifyApiService.mjs:117
var SpotifyApiService = await createApiService();
                        ^^^^^

SyntaxError: await is only valid in async function
    at wrapSafe (internal/modules/cjs/loader.js:979:16)
    at Module._compile (internal/modules/cjs/loader.js:1027:27)
    at Module._compile (E:\projects\harmonic-mixing-companion\server\node_modules\pirates\lib\index.js:99:24)
    at Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Object.newLoader [as .mjs] (E:\projects\harmonic-mixing-companion\server\node_modules\pirates\lib\index.js:104:7)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous node.js express async-await

2
推荐指数
1
解决办法
2708
查看次数

标签 统计

async-await ×1

asynchronous ×1

express ×1

javascript ×1

node.js ×1