【问题标题】:typescript dynamic import clashes with webpack.config in tsconfig.json?typescript 动态导入与 tsconfig.json 中的 webpack.config 冲突?
【发布时间】:2020-07-22 19:29:36
【问题描述】:
// 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在node环境中运行的。

而 webpack 的动态导入需要 "module": "esNext" in tsconfig.json, 如果我使用"module": "commonjs" 配置,带有webpackChunkName 的webpack 将不起作用。

我的动态导入代码是这样的,在 babel 中配置。

const starsDance = () => import(/* webpackChunkName: "starsDance" */'./game-stars-dance')

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

【问题讨论】:

标签: typescript webpack dynamic tsconfig


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您可能缺少ts-node。安装并重试

    npm install ts-node -D
    

    相关答案及更多信息:https://stackoverflow.com/a/41137188/288906

    【讨论】:

      猜你喜欢
      • 2016-01-30
      • 2016-03-30
      • 2018-12-26
      • 2018-11-19
      • 2013-10-19
      • 1970-01-01
      • 2019-12-18
      • 2019-02-08
      • 1970-01-01
      相关资源
      最近更新 更多