Answers:
您正在使用动态导入,因此必须像这样更改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"
]
}
"module": "es2015"
从tsconfig.app.json
文件中删除该行
"module": "esnext"
为。
仅添加到@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
是Angular 工作区根目录下方的应用程序专用的Typescript配置文件。存在该文件是为了使您如果要构建一个包含多个应用程序的Angular工作区,则可以为每个应用程序分别调整Typescript配置,而不必编写在应用程序之间重叠的冗余配置属性(因此该属性)。tsconfig.app.json
extends
从技术上讲,您根本不需要tsconfig.app.json
。如果你删除它,你将不得不放置"module": "esnext"
在tsconfig.json
。如果您将其保留在此处,它将优先于tsconfig.json
,因此您只需在中添加"module":"esnext"
行tsconfig.app.json
。
我通过执行以下步骤步骤1(在tsconfig.json中将“模块”:“ es2015”更改为“模块”:“ AMD”)来解决此错误
步骤2:在应用程式根目录中建立新档案tsconfig.app.json,复制Tony Ngo的程式码并贴入,即可解决这个问题。
ng new
默认情况下不使用它。有什么原因吗?