我在我的项目中使用nrwl.io。
我创建了几个库:
ng g lib rest //ok
ng g lib services //ok
ng g lib models //created ok, but "Cannot find module " later on!所有这些库都已成功创建,但当我试图导入models库时,我看到错误“无法找到模块”:
import { ModelA, ModelB } from '@myproj/models'; //Cannot find module '@myproj/models'问题是:如何以及在哪里检查我的'@myproj/models'是否已正确注册?
P.S.我可以在nx.json,angular.json和tsconfig.json中看到“模型”模块。我看不出和其他模块有什么区别。
P.P.S. I使用"@nrwl/nx": "6.1.0"和"@nrwl/schematics": "6.1.0"
发布于 2019-11-01 11:29:33
我也有同样的问题。创建一个库并尝试在多个项目中使用它。首先,确保在main tsconfig.json -> paths属性中添加了您的库。
"paths": {
"@projectName/LibraryName1": ["libs/LibraryName1/src/index.ts"],
"@projectName/LibraryName2": ["libs/LibraryName2/src/index.ts"],
....
}然后,必须将项目添加到主angular.json文件中。
"projects": {
"LibraryName1": {
"root": "libs/LibraryName1",
"sourceRoot": "libs/LibraryName1/src",
"projectType": "library",
"prefix": "projectName",
"projectType": "library"
...
}
}然后,很明显地,检查要使用lib的应用程序的tsconfig.json文件。关键是要删除paths属性。因为您已经添加了主tsconfig.json (在我的例子中,我使用nrwl (一种管理多个应用程序的技术))。
现在,您应该能够引用任何库项目,如下所示:
import { class1,class2 } from '@projectName/libraryName1';不要忘记使用index.ts导出类(假设您有模型库),如下所示:
export * from './lib/class1';
export * from './lib/class2';或者您是否有任何有组件的UI库。您应该创建一个模块,在其中添加这些组件,然后使用index.ts导出它,模块文件应该位于lib文件夹中。e.g
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { NumberOnlyDirective } from './directives/number-only.directive';
@NgModule({
imports: [CommonModule],
declarations: [NumberOnlyDirective],
exports: [NumberOnlyDirective]
})
export class UiModule {}UI库的index.ts文件
export * from './lib/ui.module';在项目app.module.ts中添加UI模块的引用
import { UiModule } from '@projectName/LibraryName1';在进口方面
imports: [
BrowserModule,
FormsModule,
ReactiveFormsModule,
HttpClientModule,
NgxPaginationModule,
Ng2OrderModule,
Ng2SearchPipeModule,
AngularEditorModule,
RichTextEditorAllModule,
NgxPrintModule,
DevExpressModule,
UiModule
...
],发布于 2020-05-31 13:58:53
在我的例子中,这是因为我很笨,没有在VS代码中重新启动我的TypeScript服务器:
CMD / CTRL + SHIFT + P
>TypeScript: Restart TS Server发布于 2020-02-28 00:25:28
我也遇到过这个问题。
假设项目名为"project1“,库名为"libray1”(因此我们试图引用模块“@ project 1/ library 1”)。引用NRWL生成的库模块可以很好地在非角度(在我的特殊情况下是Ionic/角)上下文中工作,但是会导致monorepo中角应用程序的“无法找到模块”错误。
出现此问题是因为角应用程序在“project1 1/libs/library1 1”位置查找桶文件(index.ts),而NX则将桶文件降到“project1 1/libs/library1 1/src”中。
(有点烦人的)解决方案是在“project1 1/libs/ index.ts 1”位置创建一个附加的index.ts文件,其内容如下:
export * from './src';这确保了代码在所有上下文中都能工作,并且是一次修复一次的解决方案(对于您生成的每个新库),而不必在回购中添加对每个角度应用程序的package.json文件的解释引用。
https://stackoverflow.com/questions/52092618
复制相似问题