未捕获的 TypeError:this.getExtraNgModuleProviders 不是函数

Posted

技术标签:

【中文标题】未捕获的 TypeError:this.getExtraNgModuleProviders 不是函数【英文标题】:Uncaught TypeError: this.getExtraNgModuleProviders is not a function 【发布时间】:2019-11-06 13:23:34 【问题描述】:

我正在开发一个不断在控制台上抛出此错误的存储库: Uncaught TypeError: this.getExtraNgModuleProviders is not a function.

项目在“ng serve”上编译得很好,但它在控制台上显示一个空白页面和该错误。我尝试了很多事情,但我找不到出路。

我尝试卸载和安装@angular/compiler,但没有成功。问题似乎在于 JitCompiler 找不到 this.getExtraNgModuleProviders

我认为 JitCompiler 中的函数 this.getExtraNgModuleProviders 应该是 this._getExtraNgModuleProviders 而不是 compiler.js。由于它周围的所有功能似乎都包含下划线。

更新:

我不认为函数名称与它有任何关系,因为其他开发人员可以正常运行项目并且他们拥有相同的 Jit compiler.js 文件。供参考:这是我单击控制台上的错误时所需要的地方

 function JitCompiler(_metadataResolver, _templateParser, _styleCompiler, _viewCompiler, _ngModuleCompiler, _summaryResolver, _reflector, _compilerConfig, _console, getExtraNgModuleProviders) 
            this._metadataResolver = _metadataResolver;
            this._templateParser = _templateParser;
            this._styleCompiler = _styleCompiler;
            this._viewCompiler = _viewCompiler;
            this._ngModuleCompiler = _ngModuleCompiler;
            this._summaryResolver = _summaryResolver;
            this._reflector = _reflector;
            this._compilerConfig = _compilerConfig;
            this._console = _console;
            this.getExtraNgModuleProviders = getExtraNgModuleProviders;//<- error is pointed here
            this._compiledTemplateCache = new Map();
            this._compiledHostTemplateCache = new Map();
            this._compiledDirectiveWrapperCache = new Map();
            this._compiledNgModuleCache = new Map();
            this._sharedStylesheetCount = 0;
            this._addedAotSummaries = new Set();
        

所有其他开发人员都拥有与我相同的 compiler.js。

任何帮助将不胜感激。

【问题讨论】:

this.getExtraNgModuleProviders 不是一个函数,也许你在这个函数调用上的“this”正在传递另一个作用域 嘿,@VitorPiovezam 我不确定你的意思。但是this.getExtraNgModuleProviders 是由 JitCompiler 在 compiler.js 上执行的函数调用。我没有对 compiler.js 做任何事情,所以我不确定这怎么可能。 此方法在https://github.com/angular/angular/blob/master/packages/platform-browser-dynamic/src/compiler_factory.ts 中定义,因此请确保您已安装platform-browser-dynamic npm package。一种选择是删除 node_modules 文件夹,然后安装运行npm install 命令再次安装包 @MohsinMehmood 我感觉到这是问题所在(没有平台浏览器动态),但我使用了npm i @angular/platform-browser-dynamic,但它仍然不起作用。我将尝试删除整个 node_modules 文件夹并进行更新。 compiler.js 是一样的,所以问题 - 我猜 - 在您的本地项目中。尝试删除您的包锁定文件 node_modules 文件夹,然后运行 ​​$ npm cache clean --force$ npm install 【参考方案1】:

我认为您的角度/平台浏览器动态未更新。像这样更改您的 package.json;

"@angular/platform-browser-dynamic": "~8.0.0"

在删除节点模块并运行“npm install”之后。

希望对你有帮助。

【讨论】:

【参考方案2】:

有同样的错误信息。我们使用 .net core 和 angular。

ng build 工作完美,但从 VS 开始抛出 Uncaught TypeError: this.getExtraNgModuleProviders is not a function 异常。

我可以用我们的 repo 的新克隆来解决这个问题,可能是 VS 缓存中的某些东西导致了这个问题。

【讨论】:

【参考方案3】:

我刚刚执行了以下操作,错误已解决。这是因为您的 @angular/platform-b​​rowser-dynamic 的版本不兼容。

npm uninstall @angular/platform-browser-dynamic

npm install @angular/platform-browser-dynamic

【讨论】:

以上是关于未捕获的 TypeError:this.getExtraNgModuleProviders 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

VueJS:未捕获(承诺中)TypeError:无法读取未定义的属性“推送”

未捕获的TypeError:(中间值).map不是函数[重复]

如何使用自定义错误消息捕获“TypeError:无法读取未定义的属性(读取'0')”?

未捕获(承诺)TypeError:无法读取未定义的属性“长度”

JQuery UI'可拖动不是函数'未捕获的TypeError

未捕获的 Promise 错误:TypeError:成员不是函数