Angular 8 - 延迟加载模块:错误 TS1323:仅当“--module”标志为“commonjs”或“esNext”时,才支持动态导入

当我将Angular从7更新到Angular 8时,延迟加载模块出错

我已经尝试了角度升级指南中的选项

进行了以下更改:

以前

    loadChildren: '../feature/path/sample- 
                         tage.module#SameTagModule'

   loadChildren: () => import('../feature/path/sample- 
                      tags.module').then(m => m.CreateLinksModule)

错误 TS1323:仅当“--module”标志为“commonjs”或“esNext”时,才支持动态导入。


答案 1

您正在使用动态导入,因此您必须像这样更改tsconfig.json,以将代码定位到模块。esnext

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "module": "esnext", // add this line
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "importHelpers": true,
    "target": "es2015",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2018",
      "dom"
    ]
  }
}

还要确保检查tsconfig.app.json没有像这样的模块和目标配置

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/app",
    "types": []
  },
  "include": [
    "src/**/*.ts"
  ],
  "exclude": [
    "src/test.ts",
    "src/**/*.spec.ts"
  ]
}

答案 2

只是想将我的经验添加到@Tony的答案中。更改后,它仍然显示错误(红色下划线)。只有在重新打开编辑器(我使用VSCode)后,我才看到红色下划线消失了。tsconfig.json