Я пытаюсь кодировать свое приложение с помощью webpack, но webpack не создает фрагменты для моего динамического импорта. Я нашел здесь один источник: https://davidea.st/articles/webpack-typescript-code-split-wont-work в котором говорилось, что мне нужно изменить свойство моего модуля в файле tsconfig с «commonjs» на «esnext», чтобы компилятор машинописного текста не сводил мои операторы динамического импорта к обещаниям, в результате чего Webpack не знал, что они являются динамическим импортом, и, таким образом, не создавал динамический куски. Я следил за этим и во время компиляции вижу, что сейчас создаются чанки! Ооооо! Однако компилятор выдает ошибку с ошибкой в заголовке моего вопроса при попытке разрешить операторы импорта в моем экспресс-приложении, поскольку этот импорт ES не сводится к чему-то, что понимает узел. Кто-нибудь знает, можно ли этого добиться? Я хочу использовать операторы импорта ES в узле, но без свойства module в моем файле 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"
]
}
Я пробовал этот плагин раньше, но, к сожалению, не повезло.
Из онлайн-расследования мне кажется, что я должен использовать устаревший подход require.ensure, как указано здесь: webpack.js.org/api/module-methods/#require-ensure Если я хочу использовать динамический импорт с синтаксисом модуля commonJs





По умолчанию ts-node использует параметры компилятора в файле tsconfig.json в рабочем каталоге; вы можете указать другой файл tsconfig.json с опцией --project. Файл tsconfig.json, который вы используете с ts-node, должен иметь module, установленный на commonjs (или опущенный, в этом случае ts-node использует его по умолчанию как commonjs), чтобы компиляция на лету генерировала модули, понятные Node. Возможно, вам придется использовать отдельные файлы tsconfig.json для кода сервера, который вы запускаете с ts-node, и кода клиента, который вы упаковываете с помощью Webpack.
О, здорово, я никогда не думал использовать другой файл tsconfig! отличная идея! Я заставил его работать вчера вечером, используя require.ensure для ленивой загрузки моих компонентов вместо import (), но, похоже, это устаревший способ делать вещи, перечисленные здесь: webpack.js.org/api/module-methods/#require- убедитесь, что я проверю второй файл tsconfig, спасибо
Сработал шарм Мэтт! Спасибо!
Может это плагин Babel? babeljs.io/docs/en/…