Я пробую новый синтаксис ожидания верхнего уровня для импорта модуля, но Babel не распознает синтаксис, несмотря на использование preset-env, если я не установил явно плагин @babel/plugin-syntax-top-level-await
. Почему я должен вручную указать этот плагин? У меня сложилось впечатление, что preset-env позаботится об этих вещах автоматически?
Для контекста мои настройки следующие:
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
};
При запуске yarn run babel myFile.ts
вывод и Выданы следующие ошибки:
@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');
В качестве дополнительного вопроса, почему preset-env загружает 5 плагинов синтаксиса, показанных в выходных данных отладки, но пропускает плагин синтаксиса верхнего уровня в ожидании синтаксиса?