角度8-延迟加载模块: 错误 TS1323: 只有当“—— module”标志为“ commonjs”或“ esNext”时才支持动态导入

当我更新角度从7角8,得到延迟加载模块错误

我已经尝试了这些选项,它们都在角度升级指南中

作出以下修改:

之前

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

之后

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

错误 TS1323: 只有当“—— module”标志为 “ commjs”或者“ esNext”。

94454 次浏览

您正在使用动态导入,因此必须像这样更改 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 的回答中,您可能还需要在 tsconfig.app.json 中执行相同的操作(更改为“ module”: “ esnext”)。在我的示例中,tsconfig.json 已经使用 esnext 作为模块,但 tsconfig.app.json 仍然使用 es2015,这导致了此错误。

我只是想在“托尼的回答”中加入我的经验。 在更改 tsconfig.json之后,它仍然显示一个错误(红色下划线)。只有在重新打开编辑器之后(我使用 VSCode)我看到红色下划线消失了。

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

Json

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

tsconfig.app.json是特定于位于角 工作空间根目录下的 应用程序的类型脚本配置文件。tsconfig.app.json的存在使得如果你正在构建一个包含 多个应用程序的 Angular 工作区,你可以分别为每个应用程序调整类型脚本配置,而不必编写应用程序之间重叠的冗余配置属性(因此是 extends属性)。

技术上来说,你根本不需要 tsconfig.app.json。如果你删除它,你将不得不把 "module": "esnext"tsconfig.json。如果您将它保持在那里,它将优先于 tsconfig.json,所以您只需要在 tsconfig.app.json中添加 "module":"esnext"行。

我通过执行以下步骤来解决这个错误 第一步: 「模组」 : 「 es2015」至 Tsconfig.json 中的“ module”: “ AMD”

第二步: 在 app 根目录中创建一个新文件 tsconfig.app.json,复制 Tony Ngo 的代码并粘贴进去,然后这个问题就解决了。

我的角度版本是8.2,我只是修改了“模块”: “ es2015”到“模块”: “ es2020”

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

如果您正在使用 Ionic 框架和 VSCode,您需要更新您的类型脚本 IDE 版本(> 4) !

只要给出下面的命令来更新角度版本,错误就会消失。

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

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

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

我有这个问题与角13,我注意到一些服务有这个问题,而其他人没有,区别是

@import { Injectable } from '@angular/core/';

虽然这完美编译没有问题的角度9,但修复是删除/在结束成为’

@import { Injectable } from '@angular/core';