SyntaxError: неожиданный импорт токена - Node.js
Я пытаюсь разделить код моего приложения с помощью веб-пакета, но веб-пакет не создает фрагменты для моего динамического импорта. Я нашел один источник здесь: https://davidea.st/articles/webpack-typescript-code-split-wont-work который сказал, что мне нужно изменить свойство моего модуля в моем файле tsconfig с "commonjs" на "esnext", так что компилятор машинописного текста не уменьшит мои динамические операторы импорта до Promises, в результате чего Webpack не будет знать, что они являются динамическими импортами, и, следовательно, не будет создавать динамические фрагменты. Я следовал за этим, и во время компиляции я вижу, что куски сейчас создаются! Whoooo! Однако компилятор выдает ошибку с ошибкой в заголовке моего вопроса, когда пытается разрешить операторы импорта в моем приложении Express, поскольку импорт ES не сводится к тому, что узел больше не понимает. Кто-нибудь знает, возможно ли это достичь? Я хочу использовать операторы импорта ES в узле, но без свойства модуля в моем файле tsconfig, установленного на "commonjs". Я действительно не хочу реорганизовывать все операторы импорта в commonJS require.
tsconfig.json:
{
"compilerOptions": {
"target": "es6",
"module": "esnext",
"allowJs": true,
"sourceMap": false,
"inlineSourceMap": true,
"strict": true,
"strictNullChecks": true,
"noImplicitAny": true,
"noImplicitReturns": true,
"noEmitOnError": true,
"removeComments": false,
"forceConsistentCasingInFileNames": true,
"suppressImplicitAnyIndexErrors": false,
"jsx": "react",
"watch": false,
"moduleResolution": "node"
}}
версия узла: v8.11.3
Я использую ts-node в моем скрипте npm для выполнения кода моего сервера:
"start": "webpack && ts-node -./src/service/index.ts --env=prod"
Мой.babelrc выглядит следующим образом:
{
"presets": [
"react",
"stage-3",
[
"env",
{
"modules": false
}
]
],
"plugins": [
"react-hot-loader/babel",
"syntax-dynamic-import"
]
}
1 ответ
По умолчанию, ts-node
использует параметры компилятора в tsconfig.json
файл в рабочем каталоге; Вы можете указать другой tsconfig.json
файл с --project
вариант. tsconfig.json
файл, который вы используете с ts-node
должен иметь module
установлен в commonjs
(или опущено, в этом случае ts-node
по умолчанию это commonjs
) для того, чтобы компиляция на лету генерировала модули, понятные Node. Возможно, вам придется использовать отдельные tsconfig.json
файлы для кода сервера, с которым вы работаете ts-node
и код клиента, который вы упаковываете с помощью Webpack.