Angular VSCode/tsconfig路径问题-文件被拉入,但我得到";找不到模块";在编辑部
自从我不久前开始做这个项目以来,我一直有这个奇怪的问题。在我的各种角度组件/类等中,我使用Angular VSCode/tsconfig路径问题-文件被拉入,但我得到";找不到模块";在编辑部,angular,typescript,visual-studio-code,Angular,Typescript,Visual Studio Code,自从我不久前开始做这个项目以来,我一直有这个奇怪的问题。在我的各种角度组件/类等中,我使用import导入其他模块和文件。对于使用基本路径@符号的任何一个包,我在VSCode中得到一个错误(注意:@angular/core和其他包可以工作…问题只是路径)。奇怪的是,我可以编译和运行应用程序而没有任何问题。。。尽管有警告,所有导入都成功拉入 我只是忽略了这个问题一段时间,但它导致了一个非常不方便的问题。。。例如,如果我尝试转到某个导入模块中的对象的定义,VSC不会将我带到该文件,因为它似乎找不到它
import
导入其他模块和文件。对于使用基本路径@
符号的任何一个包,我在VSCode中得到一个错误(注意:@angular/core和其他包可以工作…问题只是路径)。奇怪的是,我可以编译和运行应用程序而没有任何问题。。。尽管有警告,所有导入都成功拉入
我只是忽略了这个问题一段时间,但它导致了一个非常不方便的问题。。。例如,如果我尝试转到某个导入模块中的对象的定义,VSC不会将我带到该文件,因为它似乎找不到它
我的团队中的每个人在VSCode中使用完全相同的代码库(和相同的tsconfig文件),而没有遇到此问题。因此,Tconfig文件或代码库设置本身似乎没有问题,而是我的VSCode本身出了问题。我已经搜索了StackOverflow和其他地方寻找解决方案,但没有任何运气。如有任何建议,将不胜感激
导入示例(角度ts文件的顶部):
将鼠标悬停在任何带有路径快捷方式前缀的导入上时,会收到以下警告:
找不到模块'@middlemass.signing/dto/signing-action'或其相应的类型声明。
tsconfig.json:
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"suppressImplicitAnyIndexErrors": true,
"target": "es5",
"resolveJsonModule": true,
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
],
"module": "es2015",
"baseUrl": "./",
"paths": {
"@middlemass.sending/*": [
"projects/middlemass-sending/src/*"
],
"@middlemass.sending/shared/*": [
"projects/middlemass-sending/src/shared/*"
],
"@middlemass.sending/utils/*": [
"projects/middlemass-sending/src/shared/utils*"
],
"@middlemass.sending/services/*": [
"projects/middlemass-sending/src/services/*"
],
"@middlemass.sending/dto/*": [
"projects/middlemass-sending/src/dto/*"
],
"@middlemass.sending/env/*": [
"projects/middlemass-sending/src/environments/*"
],
"@middlemass.sending/styles/*": [
"projects/middlemass-sending/src/scss/*"
],
"@middlemass.sending/locale/*": [
"projects/middlemass-sending/locale/*"
],
"@middlemass.signing/locale/*": [
"projects/middlemass-signing/locale/*"
],
"@middlemass.signing/dto/*": [
"projects/middlemass-signing/src/app/core/dto/*"
],
"@middlemass.signing/services/*": [
"projects/middlemass-signing/src/app/core/services/*"
],
"@middlemass.signing/shared/*": [
"projects/middlemass-signing/src/app/shared/*"
],
"@middlemass.signing": [
"projects/middlemass-signing/src"
],
"@middlemass.signing/*": [
"projects/middlemass-signing/src/*"
],
"@middlemass.common": [
"projects/middlemass-common/src"
],
"@middlemass.common/*": [
"projects/middlemass-common/src/*"
]
}
},
"angularCompilerOptions": {
"fullTemplateTypeCheck": true,
"strictInjectionParameters": true,
"preserveWhitespaces": false
}
}
因此,这并不是真正的VSCode或tsconfig问题。我不敢相信我从第一天起就错过了这个,但基本上这个代码库由一个根目录中的三个独立项目组成。每天,我的团队和我将一次处理三个项目中的一个,在进行开发时,我总是打开特定的项目目录。tsconfig文件存在于根目录中即使独立的项目有自己的tsconfig文件继承根目录,但没有在VSCode中打开根目录也是导致此问题的原因。 因此,基本上建立了代码库:
Projects Folder (root with the "master" tsconfig)
--Project I (with its own tsconfig that extends the root tsconfig)
--Project II (with its own tsconfig that extends the root tsconfig)
--Project III (with its own tsconfig that extends the root tsconfig)
我只需要打开VSCode中的Projects文件夹,基本路径快捷方式就可以工作了。在我假设子项目文件夹有它们自己的从根扩展的tsconfig文件之前,只需在VSC中打开这些单独的文件夹就可以了,但事实并非如此。我必须打开包含主tsconfig文件的根文件夹
这样做的一个缺点是,在一个项目中搜索文件或代码可能会返回其他项目的结果。但是,您可以对VSC工作区设置进行一些修改以防止出现这种情况,例如:
"search.exclude": {
"**/node_modules": true,
"**/bower_components": true,
"**/*.code-search": true,
"**/projects/project1": true,
"**/projects/project2": false
"**/projects/project3": false
}
使用此设置,如果您在project1中,则只能在project1中获得搜索结果。。。您可以为您正在从事的任何项目修改此模式。因此,这实际上不是VSCode或tsconfig问题。我不敢相信我从第一天起就错过了这个,但基本上这个代码库由一个根目录中的三个独立项目组成。每天,我的团队和我将一次处理三个项目中的一个,在进行开发时,我总是打开特定的项目目录。tsconfig文件存在于根目录中即使独立的项目有自己的tsconfig文件继承根目录,但没有在VSCode中打开根目录也是导致此问题的原因。 因此,基本上建立了代码库:
Projects Folder (root with the "master" tsconfig)
--Project I (with its own tsconfig that extends the root tsconfig)
--Project II (with its own tsconfig that extends the root tsconfig)
--Project III (with its own tsconfig that extends the root tsconfig)
我只需要打开VSCode中的Projects文件夹,基本路径快捷方式就可以工作了。在我假设子项目文件夹有它们自己的从根扩展的tsconfig文件之前,只需在VSC中打开这些单独的文件夹就可以了,但事实并非如此。我必须打开包含主tsconfig文件的根文件夹
这样做的一个缺点是,在一个项目中搜索文件或代码可能会返回其他项目的结果。但是,您可以对VSC工作区设置进行一些修改以防止出现这种情况,例如:
"search.exclude": {
"**/node_modules": true,
"**/bower_components": true,
"**/*.code-search": true,
"**/projects/project1": true,
"**/projects/project2": false
"**/projects/project3": false
}
使用此设置,如果您在project1中,则只能在project1中获得搜索结果。。。您可以为您正在从事的任何项目修改此模式。每个人都使用相同版本的VS代码吗?另外,您的VS代码是使用自己的typescript版本还是使用项目的typescript版本?要进行检查,当查看.ts文件时,屏幕右下角会显示您的TypeScript版本。单击它将允许您在与VS代码捆绑的版本和您的应用程序包含的版本之间进行更改。我以前在IDE中遇到过类似这样的奇怪警告。@cjd82187-谢谢您的回复!我还没有检查过这些,但我马上就要检查了。我很感激!每个人都使用相同版本的VS代码吗?另外,您的VS代码是使用自己的typescript版本还是使用项目的typescript版本?要进行检查,当查看.ts文件时,屏幕右下角会显示您的TypeScript版本。单击它将允许您在与VS代码捆绑的版本和您的应用程序包含的版本之间进行更改。我以前在IDE中遇到过类似这样的奇怪警告。@cjd82187-谢谢您的回复!我还没有检查过这些,但我马上就要检查了。我很感激!