未捕获的 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-browser-dynamic 的版本不兼容。
npm uninstall @angular/platform-browser-dynamic
npm install @angular/platform-browser-dynamic
【讨论】:
以上是关于未捕获的 TypeError:this.getExtraNgModuleProviders 不是函数的主要内容,如果未能解决你的问题,请参考以下文章
VueJS:未捕获(承诺中)TypeError:无法读取未定义的属性“推送”
未捕获的TypeError:(中间值).map不是函数[重复]
如何使用自定义错误消息捕获“TypeError:无法读取未定义的属性(读取'0')”?
未捕获(承诺)TypeError:无法读取未定义的属性“长度”