VSCode / tsconfig路径问题-文件被拉入,但在编辑器中出现“找不到模块”

如何解决VSCode / tsconfig路径问题-文件被拉入,但在编辑器中出现“找不到模块”

自从前一段时间开始从事这个项目以来,我一直遇到这个奇怪的问题。在我的各种Angular组件/类/等中。我正在使用import引入其他模块和文件。对于使用基本路径@符号的任何这些,我在VSCode中遇到错误(请注意:@ angular / core和其他软件包有效……问题仅在于路径)。奇怪的是我可以毫无问题地编译和运行该应用程序……尽管有警告,所有导入都已成功导入。

我已经无视这个问题了一段时间,但是它导致了一个非常不便的问题……例如,如果我尝试去定义一个对象,该对象位于导入的模块之一VSC中不会将我带到该文件,因为它似乎找不到它。

我们团队中的每个人在VSCode中使用完全相同的代码库(和相同的tsconfig文件),而不会遇到此问题。因此,tsconfig文件或代码库设置本身似乎不是问题,而是我的VSCode本身有问题。我已经在StackOverflow和其他地方搜索了解决方案,但是没有任何运气。任何建议将不胜感激。

导入示例(Angular ts文件的顶部):

import { SigningAction } from '@middlemass.signing/dto/signing-action';

以下是我将鼠标悬停在具有路径快捷方式前缀的任何导入上时得到的警告:

Cannot find module '@middlemass.signing/dto/signing-action' or its corresponding type declarations.

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中没有打开根目录也导致了此问题。

因此基本上已经建立了代码库:

<div class="container">
 <div class="large-item">Lorem ipsum dolor sit amet consectetur,adipisicing elit. Quis ipsam debitis sint? Aperiam,saepe alias. Possimus excepturi fugit inventore consectetur ipsam distinctio maiores,vero veniam ad quas numquam at repellat? Lorem ipsum dolor sit amet consectetur,vero veniam ad quas numquam at repellat?Lorem ipsum dolor sit amet consectetur,vero veniam ad quas numquam at</div>
 <div class="item-one">Content</div>
 <div class="item-two">repellat?</div>

</div>

我只需要打开VSCode中的Projects文件夹,即可使用基本路径快捷方式。在我假设由于子项目文件夹具有从根目录扩展而来的自己的tsconfig文件之前,可以在VSC中打开这些单独的文件夹是可以的,但是事实并非如此。我必须打开包含主tsconfig文件的根文件夹。

这样做的一个缺点是,在一个项目中搜索文件或代码可能会从其他项目中返回结果。但是,您可以对VSC工作区设置进行一些修改以防止这种情况,例如:

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)

使用此设置,如果您在project1中,则只会在project1中获得搜索结果...您可以只针对所从事的项目修改此模式。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-