我正在嘗試使用在 Node v14.8 中添加的新頂級等待。我知道 IIFE 是過去的首選解決方法之一,但這個問題是關于新的頂級等待功能以及為什么盡管已與 Node 14.8 一起發布但它仍會拋出錯誤我正在將我的 Axios 實例從我的控制器中提取到一個獨立的服務中。在該服務文件中,我試圖實例化然后導出一個 Axios 實例,該實例是使用來自 Spotify 的 API 的存儲授權標頭創建的。因為它隨后被導入到我的控制器中(傳遞到構造函數然后它導出new SpotifyApiController(SpotifyApiService))并且導入是同步的,所以我試圖使用新的頂級等待功能在啟動/導入時完全實例化它,但出現以下錯誤:[nodemon] starting `babel-node bin/www.js --harmony-top-level-await --experimental-repl-await`E:\projects\harmonic-mixing-companion\server\services\SpotifyApiService.mjs:117var 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 Module.require (internal/modules/cjs/loader.js:952:19)? ? at require (internal/modules/cjs/helpers.js:88:18)? ? at Object.<anonymous> (E:\projects\harmonic-mixing-companion\server\controllers\/SpotifyApiController.js:1:1)從錯誤來看,babel-node 似乎自從const SpotifyApiService = ...成為var SpotifyApiService = .... 我也添加"@babel/plugin-syntax-top-level-await"到我的babel.config.json.該服務的文件擴展名為.mjs. 我也嘗試過"type": "module"在服務器的 package.json 中進行設置,但這也沒有結果。如果我錯了請糾正我,但是將我的整個后端服務器設置為模塊對我來說也不合適,因為它對我來說聽起來不像一個模塊化單元(相對于可重用的)SpotifyApiService。console.log(process.version);在我的主入口文件的頂部仔細檢查了我的節點版本,它打印了預期的 14.14.0 版本。
在 Node v14.14.0 中使用頂級等待功能時
一只甜甜圈
2023-05-25 18:04:58