J'essaie la nouvelle syntaxe d'attente de niveau supérieur pour importer un module, mais Babel ne reconnaît pas la syntaxe, malgré l'utilisation de preset-env, à moins que je ne définisse explicitement le plugin @babel/plugin-syntax-top-level-await
. Pourquoi dois-je spécifier manuellement ce plugin ? J'avais l'impression que preset-env s'occuperait de ces choses automatiquement ?
Pour le contexte, mes paramètres sont les suivants.
presets: [
[
'@babel/preset-env',
{
debug: true,
modules: false,
useBuiltIns: 'usage',
corejs: 3,
},
],
'@babel/preset-typescript',
],
// plugins: ['@babel/plugin-syntax-top-level-await'], // Commented b/c I was experimenting
};
En cours d'exécution yarn run babel myFile.ts
la sortie et l'erreur affichée sont :
@babel/preset-env: `DEBUG` option
Using targets:
{
"node": "13.12"
}
Using modules transform: false
Using plugins:
proposal-nullish-coalescing-operator { "node":"13.12" }
proposal-optional-chaining { "node":"13.12" }
syntax-json-strings { "node":"13.12" }
syntax-optional-catch-binding { "node":"13.12" }
syntax-async-generators { "node":"13.12" }
syntax-object-rest-spread { "node":"13.12" }
syntax-dynamic-import { "node":"13.12" }
Using polyfills with `usage` option:
SyntaxError: /path/to/project/src/storage/index.ts: Unexpected token, expected ";" (4:6)
2 | import { AppError } from '../errors';
3 |
> 4 | await import('./db/dbDiskMethods');
| ^
5 |
6 | const getDbDiskMethods = async () => {
7 | return await import('./db/dbDiskMethods');
En guise de question secondaire, pourquoi preset-env charge-t-il les 5 plugins syntaxiques affichés dans la sortie de débogage, mais ignore le plugin syntaxique de niveau supérieur en attente ?