// tsconfig.json
{
"compilerOptions": {
"target": "es5",
"lib": ["dom","esnext"],
// "module": "commonjs",
"module": "esNext",
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"moduleResolution": "node"
}
}
//webpack.config.ts
import merge from 'webpack-merge'
import base from './webpack.base'
import webpack from 'webpack';
// ...
使用上面的配置,当我运行npm run build
时,它抛出错误:
(function (exports, require, module, __filename, __dirname) { import merge from 'webpack-merge';
SyntaxError: Cannot use import statement outside a module`
我发现我应该使用"module": "commonjs"
的解决方案,这是毫无疑问的webpack运行在节点环境。
而动态导入webpack需要tsconfig.json
中的"module": "esNext"
,如果我使用"module": "commonjs"
配置,则带webpackChunkName
的webpack无法工作。
我的动态导入代码如下所示,还有babel中的配置。
const starsDance = () => import(/* webpackChunkName: "starsDance" */'./game-stars-dance')
我在很多谷歌上都找不到最终的解决方案,我该怎么办呢?非常感谢你的帮助。
2条答案
按热度按时间vddsk6oq1#
我通过在尝试运行
webpack --mode production
命令之前安装ts-node
解决了这个问题。我相信ts-node是用来将webpack.config.ts
文件转换成节点可以理解的文件的。v8wbuo2f2#
您可能缺少
ts-node
。请安装它,然后重试相关答案及其详细信息:https://stackoverflow.com/a/41137188/288906