将可发布库导入另一个库失败Angular

时间:2019-03-01 07:40:19

标签: angular angular-cli angular-library

我正在尝试查找用于在Angular中导入库的修复程序。

我正在关注github上的这一未解决问题。

我无法解决这个问题。我的第一个库已构建,当我尝试导入时,在dist文件夹和新库中都存在该错误。

我尝试过的步骤

1)根据编译器选项下github上的未解决问题导入tsconfig.lib.json

导入未发布的lib的NgModule

import {MyWidgetsModule} from "../../../my-widgets/src/lib/my-widgets.module";

甚至尝试过

import {MyWidgetsModule} from "my-widgets";




    "paths": {
      "my-widgets/*": [
        "dist/my-widgets/*"
      ]
    }
  },

错误堆栈

  

'rootDir'应该包含所有源文件。

2)

  

如果我删除了ngModule中的模块导入,则会出现类似找不到的错误   模块。

注意

我的主要tsconfig文件包含所有正确的导入。

我使用Angular cli命令ng g library <name>

构建了两个库

修改

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "baseUrl": "src",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2016",
      "dom"
    ],
    "paths": {
      "my-widgets": [
        "dist/my-widgets"
      ],
      "my-widgets/*": [
        "dist/my-widgets/*"
      ],
      "my-widgets-extn": [
        "dist/my-widgets-extn"
      ],
      "my-widgets-extn/*": [
        "dist/my-widgets-extn/*"
      ],
      "my-framework": [
        "dist/my-framework"
      ],
      "my-framework/*": [
        "dist/my-framework/*"
      ],
      "my-framework-extn": [
        "dist/my-framework-extn"
      ],
      "my-framework-extn/*": [
        "dist/my-framework-extn/*"
      ]
    }
  }
}

我已经创建了四个库,所以请不要感到困惑..

1 个答案:

答案 0 :(得分:1)

我认为问题仅在于路径。您将baseUrl写为src,但您写的paths好像是./。假设您的工作区结构如下:

dist/my-widgets (compiled)
projects/my-widgets (TS)
projects/my-app (ts)
tsconfig.json

您可以在我的应用程序中使用它:

import {MyWidgetsModule} from "my-widgets";

在tsconfig中,您需要添加路径:

"baseUrl": "./",
"paths": {
  "my-widgets": [
    "dist/my-widgets"
  ]
}

或者,如果您要使用未编译的版本,则可以对其进行编辑并让ng serve进行更改:

"baseUrl": "./",
"paths": {
  "my-widgets": [
    "projects/my-widgets/src/public-api"
  ]
}

这也取决于库的入口点,默认情况下,我相信,按角度cli可以按照我在上面所写的方式创建它,并将所有可导入的项收集在src/public-api.ts中。