当我在顶层使用“await”时,如下所示:
const LuckyDrawInstance=await new web3.eth.Contract(abi)
我在终端上收到警告:“set Experiments.topLevelAwait true”。当我尝试将其添加到“tsconfig.json”时,它仍然不起作用。它说“实验”属性不存在。
我可以将它包装在异步函数中,但我想在没有包装函数的情况下设置它。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
在撰写本文时对我有用的最新解决方案是使用 Babel 而不是 SWC,因为 Next.js 不允许自定义 SWC 配置,因此,您不能通过
允许
文件。topLevelAwait
。 swcrc@babel/plugin-syntax-top-level-await
的 Babel 插件添加到package.json
中。例如。
在
package.json
所在项目的根目录中创建.babelrc
文件。在
.babelrc
中确保包含next/babel
预设和topLevelAwait
插件。例如。
这是最简单的解决方案,直到 Next.js 团队允许我们包含 SWC 配置。请注意,通过这样做,您将不会获得 SWC 性能优势,因为它将被禁用以支持 Babel。
与 tsconfig.json 无关。您必须在 next.config.js 中设置它。新版本的next.js使用webpack5,webpack5支持顶级await。
注意
您必须在功能组件之外使用它:
下 13 条
相同的设置适用于“pages”和“app”目录中的“next”:“^13.1.6”。 (因为此功能是
webpack5
功能,而不是 next.js 功能)您可以使用以下示例代码对其进行测试:警告
由于它是实验性的,因此在某些版本中可能会被破坏