类不是 Angular 模块 - 仅在 IntelliJ/Webstorm 中导入本地构建的 Angular 库时

cie*_*awy 2 intellij-idea angular angular-library

我正在尝试使用在单独的 Angular 应用程序中存在的库(项目)中实现的 Angular 模块。在 IntelliJ 中,我收到一个错误,Class MyModule is not an Angular module并且在我可以成功运行ng build此项目时,IntelliJ 中似乎无法识别所有库。更奇怪的是,我实际上有两个 Angular 库存在于另一个 Angular 应用程序中,我可以毫无问题地使用其他库中的模块。

我访问过其他类似的相关问题,class is not an Angular module但它们似乎并不相关。

cie*_*awy 7

这是我经过几个小时的思考后找到的答案。我在主项目中使用有问题的库的方式是:

  • npm linkbuildlib文件夹中
  • npm link @my-org/my-new-lib 在应用程序中,我看到了问题。

ng build @my-org/my-new-lib --watchlib一起,这使我可以同时处理两个项目,在目标应用程序中立即看到结果。

这个问题显然是由于 IntelliJ 中的一个错误 - https://youtrack.jetbrains.com/issue/WEB-38354?_ga=2.263408847.258701770.1571260138-1443411092.1565629801 - 尽管它dist会自动导致依赖关系被排除在外该库正确链接到目标应用程序的node_modulesIntelliJ 将其排除在外,因此该库实际上无法在 IDE 中使用。

解决方法(类似于 jetbrains 票证中建议的方法)是在目标应用程序的 IDE 中转到符号链接node_modules/@my-org/my-new-lib- 右键单击​​它并选择将目录标记为->不排除

希望这可以为某人节省一些时间,因为它确实令人困惑且难以克服。