Quand j'utilise "attendre" au niveau supérieur comme ceci :
const LuckyDrawInstance=await new web3.eth.Contract(abi)
Je reçois l'avertissement : "set Experiments.topLevelAwait true" sur le terminal. Lorsque j'essaie de l'ajouter à "tsconfig.json", cela ne fonctionne toujours pas. Il dit que la propriété « expérimentale » n’existe pas.
Je peux l'envelopper dans une fonction asynchrone, mais je souhaite le définir sans fonction d'emballage.
La dernière solution qui a fonctionné pour moi au moment de la rédaction de cet article consiste à utiliser Babel au lieu de SWC, car Next.js n'autorise pas la configuration SWC personnalisée, vous ne pouvez donc pas transmettre de fichiers
允许
.topLevelAwait
。 swcrc@babel/plugin-syntax-top-level-await
的 Babel 插件添加到package.json
dans.Par exemple.
Dans
package.json
所在项目的根目录中创建.babelrc
fichiers.Dans le plugin
.babelrc
中确保包含next/babel
预设和topLevelAwait
.Par exemple.
C'était la solution la plus simple jusqu'à ce que l'équipe Next.js nous permette d'inclure la configuration SWC. Notez qu'en faisant cela, vous n'obtiendrez pas les avantages en termes de performances de SWC car il sera désactivé au profit de Babel.
N'a rien à voir avec tsconfig.json. Vous devez le définir dans next.config.js. La nouvelle version de next.js utilise webpack5, qui prend en charge l'attente de niveau supérieur.
Attention
Vous devez l'utiliser en dehors d'un composant fonctionnel :
13 articles suivants
Les mêmes paramètres s'appliquent à « suivant » dans les répertoires « pages » et « app » : « ^13.1.6 » . (Parce que cette fonctionnalité est une fonctionnalité
webpack5
webpack5
, pas une fonctionnalité next.js) Vous pouvez la tester en utilisant l'exemple de code suivant :AVERTISSEMENT
Comme il est expérimental, il peut être cassé dans certaines versions