typescript动态导入与tsconfig.json中的webpack.config冲突?

mwngjboj  于 2023-01-03  发布在  TypeScript
关注(0)|答案(2)|浏览(234)
// 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')

我在很多谷歌上都找不到最终的解决方案,我该怎么办呢?非常感谢你的帮助。

vddsk6oq

vddsk6oq1#

我通过在尝试运行webpack --mode production命令之前安装ts-node解决了这个问题。我相信ts-node是用来将webpack.config.ts文件转换成节点可以理解的文件的。

v8wbuo2f

v8wbuo2f2#

您可能缺少ts-node。请安装它,然后重试

npm install ts-node -D

相关答案及其详细信息:https://stackoverflow.com/a/41137188/288906

相关问题