正如标题所示,我已经使用ng generate library lib
生成了一个基础库;然后我生成了另一个名为lib2
的库。我希望使用lib
的一些基本组件或服务,因此我在lib
模块中导入了lib2
,但是npm run build lib2
失败了。
我收到此错误:error TS2307: Cannot find module 'lib'
。
如何正确导入基础库?任何帮助表示赞赏。
答案 0 :(得分:3)
您将需要先构建您的库,请参见此问题Angular 6 CLI -> how to make ng build build project + libraries
如果您查看tsconfig.json
文件,则已通过添加lib的路径对其进行了修改-因此,您需要构建它们以填充dist文件夹。
"paths": {
"lib": [
"dist/lib"
],
"lib2": [
"dist/lib2"
]
}
答案 1 :(得分:0)
我将添加一个答案,该答案扩展了使用nx扩展的概念(我的所有项目都使用该扩展,但quickee / stubs除外):
这假定您已设置ng-packagr以在nx工作区中构建库。
创建您的库等。假设您有lib1和lib2。
现在,假设lib1使用lib2中的某些内容。
这听起来可能有些奇怪,但是如果您考虑一下,它的意义就在那里。您使用库的方式与在外部应用程序中使用库的方式完全相同(嗯,链接的方式不完全相同,但这模拟了package.json安装的过程)。
请注意,同样,在单声道仓库中,您可以仅跨库使用相对导入(再次忽略tsconfig路径条目,而仅使用相对路径从其他库中获取文件)。它有效,可能在技术上不正确,但可以为您省去一些麻烦。
我在一个大项目中碰到了这个问题,这是我的解决方案,我发现这两种方法都满足了需求,并向团队和我展示了他们所说的一切(拒绝的道歉)讨论团队的决定)。
请注意,我认为没有理由在非nx-extensions设置中不起作用。但是我很少在任何地方与他们合作,我所做的很大一部分是宣传monorepo开发人员,当与Angular面对时,NX是我与团队合作的对象。