错误:
src / app / app.component.ts:4:12-错误TS2591:找不到名称 “模块”。您是否需要为节点安装类型定义?尝试
npm i @types/node
,然后将node
添加到tsconfig的类型字段中。4 moduleId:module.id,
当我尝试运行“ ng build”以编译我的角度文件时,每次出现“ module”变量用法时都会出错。我确定模块在那里,我可以在node_modules文件夹中看到它,也可以按住Ctrl键并单击它,然后打开包含模块var的文件。
我尝试删除整个node_modules目录,然后重新安装。
到目前为止,我一直在学习tsconfig.json,所以一直保持不变,但是这里是:
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"downlevelIteration": true,
"experimentalDecorators": true,
"module": "esnext",
"moduleResolution": "node",
"importHelpers": true,
"target": "es2015",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2018",
"dom"
]
},
"angularCompilerOptions": {
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true
}
}
这是ts组件中的用法示例:
import { Component } from '@angular/core';
@Component({
moduleId: module.id,
selector: 'app',
templateUrl: 'app.component.html'
})
export class AppComponent { }
也许与我的项目结构有关,因为我不确定要使用哪种项目结构。我正在尝试使用以下结构构建弹簧+角形贴合:
角度应用的结构应该正确,因为它是由ng new命令生成的
angular.json中的输出路径设置为“ outputPath”:“ ../ public”,应位于资源目录中。
您有什么好主意吗?
答案 0 :(得分:0)
您可以在组件装饰器中删除模块属性。您不再需要写@Component({ moduleId: module.id })
,module.id
也不会被webpack自动添加。也许您在这里引用的是旧教程或代码,这就是为什么module.id仍然存在的原因。
有关更多信息,请参考此答案-Angular - What is the meanings of module.id in component?
答案 1 :(得分:0)
我通过从tsconfig.app.json中删除以下内容来解决此问题:
"compilerOptions": {
"outDir": "./out-tsc/app",
"types": []
},
并将其添加到编译器选项下的tsconfig.json中
"types": ["node"]
似乎编译器需要此“ types”:[“ node”]选项才能找到模块,而且似乎默认情况下,此选项在tsconfig.app.json中已被覆盖。.
如果有人对我有很好的解释,我将在几天之内不回答这个问题:-)
// EDIT:对此有更好的解决方案,我检查了答案是否正确。
谢谢