繁体   English   中英

“错误:必须从注入上下文调用 inject()”,链接为 npm,链接为 Angular,库为 peerDependencies

[英]"Error: inject() must be called from an injection context" with npm link, Angular and library with peerDependencies

我有一个应用程序 MyApp 和一个库 MyLib。 MyApp 使用 MyLib。 我们 package 并将 MyLib 捆绑在 Azure Devops 上作为一个工件,可以在 Azure 和本地使用。 这一切都很好。 但是,我想在本地同时处理 MyApp 和 MyLib,所以我想尝试 npm 链接。 我链接到 MyLib 的 dist 文件夹,因为它与 MyApp 通常使用 MyLib 的形式相同。 这有效,我可以看到使用了链接版本,并将 package 添加到全局 npm 包中。 MyApp 也会编译,但不会运行。 在控制台中,我看到错误:

vendor.js:18783 ERROR Error: inject() must be called from an injection context
    at injectInjectorOnly (vendor.js:108835:11)
    at Object.ɵɵinject (vendor.js:108844:59)
    at Object.LanguageService_Factory [as factory] (main.js:2377:96)
    at R3Injector.hydrate (vendor.js:24776:29)
    at R3Injector.get (vendor.js:24576:23)
    at NgModuleRef$1.get (vendor.js:41158:29)
    at Object.get (vendor.js:40822:29)
    at lookupTokenUsingModuleInjector (vendor.js:15125:31)
    at getOrCreateInjectable (vendor.js:15244:10)
    at Object.ɵɵdirectiveInject (vendor.js:28568:10)

这个 LanguageService 是库的一部分,它是一个带有“providedIn: root”的服务。 我首先认为 peerDependencies 有问题,我也尝试制作自定义 webpack 文件并提供别名,但这个问题仍然存在。 所以我可能走错了路。 我错过了什么?

关于 npm 链接,我遇到了类似的问题。

通过在主项目中的angular.json文件中添加配置"preserveSymlinks": true来解决:

{
  "projects": {        
    "architect": {
      "build": {
          ...,
          "preserveSymlinks": true
        },

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM