我有一个Angular 6项目,它由一个主应用程序组成,另一个子项目是一个库。我正在尝试从主应用程序中使用这个库,而我似乎无法让它工作。
在tsconfig.json
中,我有以下paths
配置:
"paths": {
"@my-company/my-package/*": "dist/my-package/*"
}
然后在主应用程序中,我像这样导入库:
import { ButtonModule } from '@my-company/my-package/button';
然而,当我构建主应用程序时,我遇到了大量关于无法找到模块的错误。对于上面的import语句,我会收到此错误:
Module not found: Error: Can't resolve '/Users/jattardi/code/myproject/dist/my-package/button'
但是,如果我检查dist/my-package
目录,肯定会有一个包含类型定义的button
目录。
我的导入有子路径的原因,例如@my-company/my-package/button
代替@my-company/my-package
而不仅仅是python -m pip install <module_to_install>
。不确定这是可能的。由于这是一个Angular 6 / ng-packagr生成的版本,我是否会失去这种能力?
答案 0 :(得分:0)
尝试在主应用程序中使用时遇到了同样的错误。我的答案不会解决这个问题,因为我试图获取我的延迟加载模块,我移动到新的Angular6库,工作。
我能够将我的库项目发布到npm,并将其作为npm依赖项在主应用程序中使用。例如:@ santony / ngx-material。在解决之前,您可以做一个解决方法。
答案 1 :(得分:0)
对于那些仍然面临此问题的人,ng-packagr
的文档中提供了“操作方法”:
https://github.com/ng-packagr/ng-packagr/blob/master/docs/secondary-entrypoints.md
基本上,
您要做的就是创建一个
package.json
文件,并将其放在要创建辅助入口点的位置。my_package/testing/package.json
的内容可以很简单:
{
"ngPackage": {}
}
而且,在开发应用程序中,我已经将路径引用添加到辅助端点,因此它起作用:
"@my-company/my-library/another": [
"dist/my-library/another"
]