路径别名自动导入错误

2024-02-24

当从 Angular 9 应用程序中提供路径别名的文件夹自动导入服务/组件时,我遇到了奇怪的问题。

这些是我在中定义的别名tsconfig.json

"paths": {
  "@core/*": ["app/core/*"],
  "@shared/*": ["app/shared/*"],
  "@state/*": ["app/state/*"]
}

然后在 Core 文件夹中,我重新导出所有服务index file (app/core/index.ts)

export * from './sse/sse.service';
export * from './rack/rack.service';

现在,当我在构造函数中注入服务时,提供的自动导入选项将使用错误的路径导入:

// Incorrect - auto imported path
import { RackService } from '@core/';

// Correct path after manual fix
import { RackService } from '@core/index';

这只是一个小问题,但同时也很烦人,我不确定这是否是我这边的一些不正确的配置,或者 VS Code 问题。任何想法?这可能是由 JEST 引起的,因为我使用它而不是 Jasmine,并且它需要在中定义别名package.json also.

  "jest": {
    "preset": "jest-preset-angular",
    "setupFilesAfterEnv": [
      "./src/setup-jest.ts"
    ],
    "moduleNameMapper": {
      "^@core/(.*)$": "<rootDir>/src/app/core/$1",
      "^@shared/(.*)$": "<rootDir>/src/app/shared/$1",
      "^@state/(.*)$": "<rootDir>/src/app/state/$1"
    }
  },

似乎问题是由第一个别名引起的:@core/*如果导出文件直接在第一层,则无法正确解决。我想出了两种解决方法:

1 - 将索引文件移动到名为的文件夹services其中仅包含index.ts。 现在,当自动导入(或 TS Hero:组织导入)时,自动导入如下所示:

import {someService} from '@core/services'

2 - 添加路径别名tsconfig.*.json仅用于直接指向重新导出的服务的文件index.ts

"paths": {
  "@core/*": ["app/core/*"],
  "@core/services": ["app/core/index.ts"],
  "@shared/*": ["app/shared/*"],
  "@state/*": ["app/state/*"]
}

第二个选项也需要更改package.json如果您使用 Jest 框架。

"moduleNameMapper": {
  "^@core/services$": "<rootDir>/src/app/core/index.ts",
  "^@core/(.*)$": "<rootDir>/src/app/core/$1",      
  "^@shared/(.*)$": "<rootDir>/src/app/shared/$1",
  "^@state/(.*)$": "<rootDir>/src/app/state/$1"
}

在这两种情况下,如果您有任何其他转口index.ts在核心文件夹的更深处,它仍然可以正确使用,例如@core/commons

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

路径别名自动导入错误 的相关文章

随机推荐

  • 如何以编程方式设置 app:srcCompat="@drawable/pic" 的 ImageButton 属性?

    如何设置ImageButton的财产 app srcCompat drawable pic 以编程方式 就像是myImageButton setBackgroundResource R drawable eng2 但财产app srcCom
  • 当我尝试连接到服务器时出现“远程服务器超时”异常

    尝试连接时openfire服务器通过以下代码 Connection connection new XMPPConnection https 192 168 0 101 5222 connection connect 我收到一个异常 上面写着
  • 将 NULL 日期时间值从 T-SQL 返回到 C# DataTable ==> DataRow 而不是空字符串

    该值 row 10 来自 DataRow 对象 来自 T SQL 中的 SQL 结果集 我相信它有一个 对象 类型 在我的数据库中 该特定记录的该字段的值为 NULL 但它在结果集中返回空字符串 而不是空值 我想解决根本问题并让我的结果集返
  • RDCOMClient (Outlook) - ggplot

    我正在使用RDCOMClient用于创建 Outlook 电子邮件的库 我想发送一个ggplot作为电子邮件正文内的图像 内联 not作为附件 我认为这可能的唯一方法是将绘图作为图像添加到HTMLBody财产 我尝试了两种不同的方法来在 h
  • XAML 中的中心弹出窗口

    我使用以下代码创建了一个弹出窗口 但我不知道如何将其居中我尝试在运行时自动更改边距 但我不知道该怎么做 但是有人知道如何使弹出窗口居中吗 它没有标准维度 因为我需要全球化我的程序
  • Android android.view.InflateException 二进制 XML 文件第 16 行:错误膨胀类片段

    这是 MainActivity 类 import java io BufferedReader import java io IOException import java io InputStream import java io Inp
  • Asp.net Web API 2.2 OData4 是否支持 group by 子句?

    Asp net Web API 2 2 OData v4 是否支持聚合和 group by 子句 我找不到任何决定性的答案 另一种方法是使用以下方式实现您的服务QueryByCube提供的linq扩展方法自适应LINQ http www a
  • 如何使用 Boost XML 解析器

    我编写了一个 XML 解析器来读取 XML 文件并将其转换为我的 Position 类的对象 效果很好 请看下面它的代码 XML 文件
  • 当两个错误具有相同的字符串时,errors.Is(err, target error) 返回 false

    这不应该失败 因为两个错误具有相同的字符串 但它仍然失败 if errors Is err testspec expectErr t Errorf Error mismatch want v get v testspec expectErr
  • Java中包和目录的区别

    In a Java项目 是否保留所有 java同一文件夹中的文件意味着它们位于同一包中 有什么区别与将所有项目文件保存在一个文件夹中相比 为我们的项目制作一个包 这个线程 https stackoverflow com questions
  • 在 Linux 上使用 bfd.h 编译错误

    我是 Linux 编程新手 正在尝试使用 BFD 库 这是我正在尝试编译的当前代码 include
  • MySQL 中保护列,不允许更新,仅允许在 NULL 时插入

    我想保护日期列中的现有日期不被覆盖 因此 不允许更新日期列 仅当现有字段值为 NULL 日期列默认为 NULL 时才允许插入 是triggers http dev mysql com doc refman 5 0 en triggers h
  • 有没有办法查看 Sql Server 2005 中最近的昂贵查询?

    我最近发现了活动监视器SQL Server 2008 我知道 呃 对吧 最近昂贵的查询 选项卡对我帮助很大 现在我正在尝试调试一个客户端中数据库的过度使用 但是那里的服务器SQL Server 2005 那里有一个活动监视器 但没有 最近昂
  • 为什么四元数有四个变量?

    Unity 引擎的官方文档不包含此内容 而且我的数学 物理研究还不够深入 还没有遇到过四元数 但我知道它与旋转有关 我不明白的是为什么四元数有四个变量 w x y z 而Unity中只有三个旋转轴 四元数基本上是 3D 空间中的一个轴 具有
  • 比较python中的LBP

    我生成了这样的纹理图像 我必须比较两个纹理 我使用了直方图比较方法 image file output ori png img bgr cv2 imread image file height width channel img bgr s
  • 如何使用已打开并使用登录凭据登录的浏览器

    有没有一种方法可以让使用 selenium 的 python 程序的不同运行保持我已打开并使用凭据登录的浏览器 在以后的运行中打开并使用 我正在调试一段代码 每次我需要使用我的凭据登录时在浏览器上 目前 每次我停止代码时 网络浏览器都会关闭
  • 在 Android 中使用已弃用的 AbsoluteLayout 类?

    The 绝对布局 http developer android com reference android widget AbsoluteLayout html类已被弃用 但仍然可以用代码编写它并且它可以工作 如果我使用这个类会有什么问题吗
  • 如何搜索 UITableView

    是的 我知道关于这个主题大约有十亿个问题 但它们似乎都链接到有关实现 UISearchBar 或 Apple 文档的相同旧博客文章 我想知道的是 是否有适当的教程来实现 UISearchDisplayController 类来搜索数组 字典
  • 本地数据库,我需要一些例子

    我正在制作一个将在多台计算机上安装和运行的应用程序 我的目标是制作一个与该应用程序一起安装的空本地数据库文件 当用户使用该应用程序时 他的数据库将填充来自该应用程序的数据 您能给我提供以下示例吗 我需要做什么才能让我的应用程序连接到其本地数
  • 路径别名自动导入错误

    当从 Angular 9 应用程序中提供路径别名的文件夹自动导入服务 组件时 我遇到了奇怪的问题 这些是我在中定义的别名tsconfig json paths core app core shared app shared state ap