在Angular库中导入路径

时间:2019-09-19 09:46:24

标签: angular typescript

为缩短我在库中的导入路径,我添加了

"paths": {
  "@services": ["lib/services"]
}

到我的tsconfig.lib.json。我的目录结构大多是默认目录,有多个项目使用一个库:

projects
  library/
    src/
      lib/
        services/
          index.ts
    tsconfig.lib.json
  [projects...]

我想使用像

这样的导入
import {service} from "@services";

就在我的库中-但是到目前为止,我收到“找不到模块@services”错误。

我猜路径不正确-但我不知道如何解决该问题。有人知道吗?

edit:使用的baseUrl:“ src”-适用于构建,但是在使用ng serve启动项目之一时不起作用(由于相同的错误,“无法找到模块”)。 (不使用aot标志)

谢谢。

5 个答案:

答案 0 :(得分:0)

您是否根据文档base url must be specified if "paths" is.添加了baseurl bcs?

您将需要更新tsconfig.json中的路径以及类似的内容

"baseUrl":"./",
 "paths:"{
 "@services/*":["projects/ng-otp-input/src/lib/services"],
...
}

此外,您将需要在tsconfig.lib.json For more info Refer to this SO post

中添加相同的配置

答案 1 :(得分:0)

请参阅此tsconfig.json。确保此配置文件与src文件夹位于同一级别

myUsrName

答案 2 :(得分:0)

过去的两天里,我一直在努力解决同一问题,并且至少为Angular 10找到了解决方案。

tsconfig.lib.json上,您必须必须定义baseUrl,就像提到的jitender一样。 路径必须相对于tsconfig.lib.json所在的位置。

以下两种方法对我有用:

"baseUrl": "./",
"paths": {
  "@services/*": ["src/lib/services/*"]
}

"baseUrl": "src/lib",
"paths": {
  "@services/*": ["services/*"]
}

答案 3 :(得分:0)

也将 "importHelpers": true, 添加到您的 ts 配置中。

答案 4 :(得分:0)

在 Angulare 10 中。 我们应该添加 tsconfig.base.json

"paths": {
  "@services/*": ["src/lib/services/*"]
}

注意:当您进行更改时,每次都应重新构建项目,否则如果使用 @service 则会出错。因为如果面对多次。