NullInjectorError: HighContrastModeDetector没有提供程序

10

我正在使用Angular 8开发项目,使用的Node版本是10.15.3(曾尝试其他版本,包括最新的12.31.1)。在MAC上运行良好,但在Windows上运行时会在浏览器中停止并显示错误信息。

NullInjectorError: "StaticInjectorError(AppModule)[MatCommonModule -> HighContrastModeDetector]: 
  StaticInjectorError(Platform: core)[MatCommonModule -> HighContrastModeDetector]: 
    NullInjectorError: No provider for HighContrastModeDetector!"

这与我的硬件有关吗(它是如何相关的)?


似乎存在某些版本不匹配的问题,因为此服务器提供了 providedIn: 'root': https://github.com/angular/components/blob/master/src/cdk/a11y/high-contrast-mode/high-contrast-mode-detector.ts#L41 您确定您的所有 Angular 包都具有项目所需的相同版本吗? - waterplea
4个回答

24

问题与Node版本无关,而是由于不兼容的Angular Material和Angular版本引起的。对于Angular 8,您需要使用Angular Material版本8.2.3。请从项目根目录运行以下命令。

npm i --save @angular/cdk@8.2.3 @angular/material@8.2.3

查看此SO帖子的答案,了解如何找到兼容的Angular和Angular Material版本的步骤。链接在这里。


9

当我在StackBlitz上使用了@angular/material模块,但没有引入import { BrowserModule } from '@angular/platform-browser';时,出现了以下问题。

在这种情况下,解决方案是添加BrowserModule模块。


2
在我的情况下,@angular/cdk版本引起了错误。
github:angular/cdk-builds设置为^8.1.4,并在package.json中运行npm install即可解决问题。 enter image description here

1
在我的情况下,@angular/cli@angular/material的不兼容版本导致了错误。
解决方法:
尝试将node包模块升级到package.json中兼容的版本,然后运行npm install --save命令。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接