javascript - NullInjectorError : No provider for Overlay! NgxToastr

标签 javascript angular typescript angular-services ngx-toastr

过去一天我一直在为此挠头。我在我的 Angular 应用程序中使用 Ngx-Toastr 包。以下是我认为可以帮助您理解问题的要点。

  • 在开发服务器(ng serve)中,我没有收到任何错误,没有 Nullinjector 问题,然后我使用以下命令(ng build)进行了生产构建。到此为止,一切正常。现在我需要优化包大小,所以我运行了这个(ng build --prod)。构建成功没有错误现在是时候提供代码了(我正在使用节点服务器来提供这个)。问题从这里开始——
  • 首先它要求

  • 'NullInjectorError: No provider for ToastrService'


    它来自 Ngx-Toastr 包它自己,它是有道理的,所以我将该服务添加到 appmodules 以及提供程序数组中的其他延迟加载的模块中。所以在此之后错误消失了。但接下来是我要说的——
  • 接下来它要求“NullInjectorError: No provider for Overlay!”所以我虽然必须从需要添加到提供程序数组中的包中获得此服务。所以我尝试从它自己的包中导入它,并将其添加到提供程序数组中,如下所示:

  • import { Overlay } from 'ngx-toastr/overlay/overlay';;


    这样做会出现以下错误

    Module not found: Error: Can't resolve 'ngx-toastr/overlay/overlay'


  • 接下来我尝试搜索这个问题并找到了一些建议添加以下行的stackoverflow解决方案:

  • import {OverlayModule} from '@angular/cdk/overlay';


    我在每个模块的导入数组中添加了这个模块。什么都没有改变。
    现在我不知道要导入什么以及从哪里导入。而且我也不确定我是否正确,或者我应该从哪里开始研究它。我也怀疑这个错误是来自那个包还是什么!!原因它应该在不隐式导入这些服务的情况下工作。
    我运行以下命令以在生产构建之前获取错误:

    ng serve --prod --optimization=false


    还请提及如何调试以下错误,有时在生产构建后我们会收到这样的错误,这无疑是没有意义的:

    ERROR Error: "StaticInjectorError[t -> t]: StaticInjectorError(Platform: core)[t -> t]: NullInjectorError: No provider for t!"


    我希望我的解释对你有意义。感谢您的宝贵时间,并对这个冗长的问题感到抱歉。
    最后仅供引用:我已经删除了节点模块并重新安装了它。

    最佳答案

    确保您使用的 ngx-toastr 版本与您的 angular 和 typescript 版本兼容。 https://github.com/scttcper/ngx-toastr#dependencies
    ngx-toastr v13 需要 angular >= 10

    关于javascript - NullInjectorError : No provider for Overlay! NgxToastr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63360638/

    相关文章:

    angular - 如何在 Angular 项目中导入 PDFjs-dist 以了解 pdf 文件的视口(viewport)

    typescript - Vue/Typescript/Jest - Jest 单元测试语法错误 : Unexpected token import

    angularjs - 如何将枚举分配给变量?

    javascript - 将垂直滚动条添加到 Google map 侧边栏

    仅当启用 Ivy 时,Angular 9 升级才会导致 matPrefix 和 mat-form-field 出现样式问题

    angular - Electron:如何解析产品中的 CSS url?

    node.js - 如何在不将目标设置为 ES6 的情况下获得 typescript 中生成器的支持?

    javascript - 用Javascript和replace()替换字符串的第二部分

    javascript - 无法为 IE 11 编译 Vue.js

    javascript - 仅使用 AngularJs 单击元素外部时如何关闭元素?