Javascript Angular 8-延迟加载模块:错误TS1323:仅当'--模块';标志为';commonjs';或';esNext&x27;

Javascript Angular 8-延迟加载模块:错误TS1323:仅当'--模块';标志为';commonjs';或';esNext&x27;,javascript,angular,typescript,module,angular8,Javascript,Angular,Typescript,Module,Angular8,当我将Angular从7更新为Angular 8时,得到了延迟加载模块的错误 我已经尝试过这些选项,它们在角度升级指南中 进行了以下更改: 之前 loadChildren: '../feature/path/sample- tage.module#SameTagModule' 之后 loadChildren: () => import('../feature/path/sample-

当我将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”


您正在使用动态导入,因此必须像这样更改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"
  ]
}

只需添加到@Tony的anwser中,您可能还需要在tsconfig.app.json中执行相同的操作(更改为“module”:“esnext”)。在我的例子中,tsconfig.json已经使用esnext作为模块,但是tsconfig.app.json仍然使用es2015,这导致了这个错误。

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

我认为正确的方法是调整
tsconfig.app.json
,而不是
tsconfig.json

tsconfig.app.json

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app",
    "baseUrl": "./",
    "module": "esnext",
    "types": []
  },
  "exclude": [
    "test.ts",
    "**/*.spec.ts"
  ]
}
tsconfig.app.json
是特定于位于角度工作区根目录下的应用程序的类型脚本配置文件。存在
tsconfig.app.json
,因此,如果您正在构建一个包含多个应用程序的角度工作区,则可以分别调整每个应用程序的Typescript配置,而无需写入应用程序之间重叠的冗余配置属性(因此
扩展了
属性)


从技术上讲,您根本不需要
tsconfig.app.json
。如果删除它,则必须将
模块“:“esnext”
放在
tsconfig.json
中。如果您将其保留在那里,它将优先于
tsconfig.json
,因此您只需在
tsconfig.app.json
中添加
“模块”:“esnext”
行,我通过执行以下步骤解决此错误 步骤1: “模块”:“es2015”至 “模块”:“AMD”在tsconfig.json中

步骤2:
在app root目录中创建一个新文件tsconfig.app.json,复制Tony Ngo的代码并粘贴到中,然后这个问题就会解决。

我的angular版本是8.2,我只需将“module”:“es2015”更改为“module”:“es2020”

我只通过添加 “包括”:[“src/***/.ts”]
在我的tsconfig.app.json文件中。

如果您使用的是Ionic framework和VSCode,则需要更新您的Typescript IDE版本(>4)

只需通过发出以下命令来更新角度版本。错误将消失

ng update@angular/core@angular/cli--next

然后,更改tsconfig.json文件中的目标和模块

"target": "esnext",
"module": "esnext",

ng new
默认情况下不使用此选项。有什么原因吗?当我在polyfills中取消IE11部分的注释时,它似乎在Edge、Chrome、Firefox和IE11中工作,所以我很高兴。我不得不从我的
tsconfig.app.json
中删除
“模块”:“es2015”
行file@ranbuch,我有同样的问题,但没有删除该行,我只是将其更改为
“module”:“esnext”
对我来说也是
tsconfig aot.json
。我已经将它从
es2015
更改为
esnext
,我们可以避免在这两个文件中添加“模块”:“esnext”可以放在tsconfig.json中,但不能放在tsconfig.app.json中,因为这已经扩展了tsconfig.json。我没有tsconfig.app.json文件。我应该创建一个吗?是的,请参考此。在思想上,我也有同样的问题。你需要重新开始这个项目。是的,我必须在tsconfig.json和tsconfig.app.json中添加模块:“esnext”