Angular 角度库中的导入路径

Angular 角度库中的导入路径,angular,typescript,Angular,Typescript,为了缩短库中的导入路径,我添加了 "paths": { "@services": ["lib/services"] } 我的tsconfig.lib.json。我的目录结构基本上是默认的,有多个项目使用一个库: projects library/ src/ lib/ services/ index.ts tsconfig.lib.json [projects...] 我想使用像这样的导入 import {servic

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

"paths": {
  "@services": ["lib/services"]
}
我的
tsconfig.lib.json
。我的目录结构基本上是默认的,有多个项目使用一个库:

projects
  library/
    src/
      lib/
        services/
          index.ts
    tsconfig.lib.json
  [projects...]
我想使用像这样的导入

import {service} from "@services";
就在我的库中-但到目前为止,我收到一个“找不到模块
@services
”错误

我猜路径是错误的-但我不知道如何修复它。有人有主意吗

编辑:Used baseUrl:“src”-这适用于构建,但在使用ng serve启动一个项目时不适用(由于相同的错误,“找不到模块”)。(未使用aot标志)


谢谢。

您是否根据文档添加了baseurl bcs

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

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

此外,您还需要在
tsconfig.lib.json

中添加相同的配置。您是否按照文档添加了baseurl bcs

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

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

此外,您还需要在
tsconfig.lib.json
中添加相同的配置,请参阅此tsconfig.json。确保此配置文件与src文件夹处于同一级别

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "paths": {
      "@app/*": [ "src/app/*" ],
      "@core/*": [ "src/app/core/*" ],
      "@environments/*": [ "src/environments/*" ],
      "@shared/*": [ "src/app/shared/*" ]
    },
    "sourceMap": true,
    "declaration": false,
    "module": "es2015",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2017",
      "dom"
    ]
  }
}

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

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "paths": {
      "@app/*": [ "src/app/*" ],
      "@core/*": [ "src/app/core/*" ],
      "@environments/*": [ "src/environments/*" ],
      "@shared/*": [ "src/app/shared/*" ]
    },
    "sourceMap": true,
    "declaration": false,
    "module": "es2015",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2017",
      "dom"
    ]
  }
}

在过去的几天里,我一直在努力解决同一个问题,并找到了一个解决方案,至少花了10年时间

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

以下是对我有效的两个选项:

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


在过去的几天里,我一直在努力解决同一个问题,并找到了一个解决方案,至少花了10年时间

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

以下是对我有效的两个选项:

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

“导入器”:true,
也添加到ts配置中。

“导入器”:true,
也添加到ts配置中。

角度10。 我们应该添加
tsconfig.base.json

"paths": {
  "@services/*": ["src/lib/services/*"]
}
注意:当您进行更改时,每次都应重新生成项目,否则如果使用
@service
,将导致错误。因为如果面对多次。

角度10。 我们应该添加
tsconfig.base.json

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

注意:当您进行更改时,每次都应重新生成项目,否则如果使用
@service
,将导致错误。因为如果多次面对。

您是否根据文档添加了baseurl BC?您是否根据使用的文档添加了baseurl BC?
baseurl:“src”
-这适用于构建,但在使用
ng serve
启动一个项目时不起作用(由于相同的错误,“找不到模块”)。(未使用aot标志)@nehalist我发现了一些与您的查询相关的内容,希望这能解决您的问题使用
baseUrl:“src”
-这适用于构建,但在使用
ng serve
启动一个项目时不起作用(由于相同的错误,“找不到模块”)。(未使用aot标志)@nehalist我发现了一些与您的查询相关的内容,希望这能解决您的问题。请在您的答案中添加一些解释,以便其他人可以从中学习。请在您的答案中添加一些解释,以便其他人可以从中学习