Vscode-ng-language-service: 语言服务崩溃(在 Angular 4.1.2 上):JavaScript 堆内存不足

创建于 2017-05-14  ·  5评论  ·  资料来源: angular/vscode-ng-language-service

我最近注意到语言服务停止工作并开始在控制台中看到以下内容:


致命错误:CALL_AND_RETRY_LAST 分配失败 - JavaScript 堆内存不足

 Angular 语言服务:4.1.2
打字稿:2.1.6
致命错误:CALL_AND_RETRY_LAST 分配失败 - JavaScript 堆内存不足
 1: node::Abort() [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libnode.dylib]
 2: node::DLOpen(v8::FunctionCallbackInfo<:value i="9"> const&) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libnode.dylib ]
 3: v8::internal::FatalProcessOutOfMemory(char const*) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libnode.dylib]
 4: v8::internal::FatalProcessOutOfMemory(char const*) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libnode.dylib]
 5: v8::internal::Factory::NewFixedArray(int, v8::internal::PretenureFlag) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libnode.动态库]
 6: v8::internal::JSArrayBuffer::Setup(v8::internal::Handle<:internal::jsarraybuffer i="10">, v8::internal::Isolate*, bool, void*, unsigned long, v8::internal::SharedFlag) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libnode.dylib]
 7: v8::internal::JSRegExp::New(v8::internal::Handle<:internal::string i="11">, v8::base::Flags<:internal::jsregexp::flag i ="12">) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libnode.dylib]
 8: v8::internal::EhFrameIterator::DecodeSLeb128(unsigned char const*, int*) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libnode.dylib]
 9: v8::internal::HeapNumber::HeapNumberPrint(std::__1::basic_ostream>&) [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libnode.dylib]
 10: v8::internal::RegisterConfiguration::AreAliases(v8::internal::MachineRepresentation, int, v8::internal::MachineRepresentation, int) const [/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework .framework/Versions/A/Libraries/libnode.dylib]
 11:0x2c0596f843a7
 12:0x2c05971a4765
 13:0x2c0597196a67
 [信息 - 10:12:40 PM] 与服务器的连接已关闭。 服务器将重新启动。


这是在升级到 Angular 4.1.14.1.2 ,也许其他因素也起作用了。

通过升级依赖项很容易解决问题:

cd ~/.vscode/extensions/Angular.ng-template-0.1.3
yarn upgrade @angular/language-service typescript vscode-languageserver

我还在Angular.ng-template-0.1.3升级了 deps 但仅此而已并没有解决问题,我也没有恢复更改:

cd ~/.vscode/extensions/Angular.ng-template-0.1.3/server
yarn upgrade vscode-languageclient vscode typescript

最有用的评论

@mafredri第二条评论中的错误可归因于将 TypeScript 更新为 2.1 以上。 editorServices.ts需要进行重大更改才能升级到 2.1,这就是该插件目前使用 2.1.5 的原因。

第一个评论我不知道。

如果您有一个,请考虑从您的项目中删除对@angular/language-service的开发依赖,以便它返回到使用语言服务的嵌入式版本。 如果您没有,请考虑在最新的@angular/language-service添加一个。

所有5条评论

在对 deps 进行上述升级后,我注意到扩展输出中存在一些错误,在此处添加它们以防万一它们可能会有所帮助:


错误:长度 < 0

 /Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/node_modules/typescript/lib/typescript.js:10600
 throw new Error("length < 0");
 ^

错误:长度 < 0
 在 Object.createTextSpan (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/node_modules/typescript/lib/typescript.js:10600:19)
 在 TextChange.getTextChangeRange (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:2024:44)
 在 ScriptVersionCache.getTextChangesBetweenVersions (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:2112:80)
 在 LineIndexSnapshot.getTextChangeRangeSinceVersion (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:2177:31)
 在 LineIndexSnapshot.getChangeRange (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:2182:21)
 在acquireOrUpdateDocument (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/node_modules/typescript/lib/typescript.js:74378:133)
 在 Object.updateDocumentWithKey (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/node_modules/typescript/lib/typescript.js:74357:20)
 在 Object.getOrCreateSourceFileByPath [as getSourceFileByPath] (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/node_modules/typescript/lib/typescript.js:86043:49)
 在 tryReuseStructureFromOldProgram (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/node_modules/typescript/lib/typescript.js:67052:28)
 在 Object.createProgram (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/node_modules/typescript/lib/typescript.js:66824:14)
 [信息 - 11:19:08 AM] 与服务器的连接已关闭。 服务器将重新启动。


类型错误:无法读取未定义的属性“种类”

 /Users/mafredri/ng2-project/node_modules/@angular/language-service/bundles/language-service.umd.js:43244
 开关(节点。种类){
 ^

类型错误:无法读取未定义的属性“种类”
 在 Evaluator.evaluateNode (/Users/mafredri/ng2-project/node_modules/@angular/language-service/bundles/language-service.umd.js:43244:21)
 在 Evaluator.evaluateNode (/Users/mafredri/ng2-project/node_modules/@angular/language-service/bundles/language-service.umd.js:43383:34)
 在 /Users/mafredri/ng2-project/node_modules/@angular/language-service/bundles/language-service.umd.js:43263:39
 在visitEachNode (/Users/mafredri/ng2-project/node_modules/typescript/lib/typescript.js:14724:30)
 在 Object.forEachChild (/Users/mafredri/ng2-project/node_modules/typescript/lib/typescript.js:14840:24)
 在 Evaluator.evaluateNode (/Users/mafredri/ng2-project/node_modules/@angular/language-service/bundles/language-service.umd.js:43248:22)
 在 /Users/mafredri/ng2-project/node_modules/@angular/language-service/bundles/language-service.umd.js:43317:103
 在 Array.map(本机)
 在 Evaluator.evaluateNode (/Users/mafredri/ng2-project/node_modules/@angular/language-service/bundles/language-service.umd.js:43317:69)
 在 objFromDecorator (/Users/mafredri/ng2-project/node_modules/@angular/language-service/bundles/language-service.umd.js:43753:33)
 [信息 - 11:15:20 AM] 与服务器的连接已关闭。 服务器将重新启动。


类型错误:无法读取 null 的属性“元数据”

 /Users/mafredri/ng2-project/node_modules/@angular/language-service/bundles/language-service.umd.js:48425
 var _d = this.resolver.getNonNormalizedDirectiveMetadata(directive.reference), metadata = _d.metadata, annotation = _d.annotation;
 ^

类型错误:无法读取 null 的属性“元数据”
 在 TypeScriptServiceHost.ensureTemplateMap (/Users/mafredri/ng2-project/node_modules/@angular/language-service/bundles/language-service.umd.js:48425:113)
 在 TypeScriptServiceHost.getTemplateReferences (/Users/mafredri/ng2-project/node_modules/@angular/language-service/bundles/language-service.umd.js:48265:14)
 在 LanguageServiceImpl.getTemplateReferences (/Users/mafredri/ng2-project/node_modules/@angular/language-service/bundles/language-service.umd.js:47956:90)
 在 /Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:2689:78
 在时间 (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:2677:22)
 在 Object.getTemplateReferences (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:2689:20)
 在 Project.updateFileMap (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:788:62)
 在 Project.updateGraph (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:806:14)
 在 Project.finishGraph (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:798:14)
 在 ProjectService.updateConfiguredProject (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:1708:25)
 [信息 - 11:14:33 AM] 与服务器的连接已关闭。 服务器将重新启动。


服务器错误:无法读取未定义的属性“charCount”

服务器错误:无法读取未定义的属性“charCount”
类型错误:无法读取未定义的属性“charCount”
 在 LineNode.walk (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:2439:39)
 在 LineIndex.edit (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:2304:27)
 在 ScriptVersionCache.getSnapshot (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:2086:39)
 在 ScriptInfo.snap (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:405:25)
 在 LSHost.lineOffsetToPosition (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:649:28)
 在 /Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:1439:86
 在 Array.map(本机)
 在 ProjectService.lineOffsetsToPositions (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:1439:30)
 在 /Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/documents.js:151:56
 在 TextDocuments.logErrors (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/documents.js:234:13)
 [错误 - 11:19:44 AM] 通知处理程序“textDocument/didChange”失败并显示消息:无法读取未定义的属性“charCount”


通知处理程序“textDocument/didChange”失败并显示消息:无法读取未定义的属性“charCount”

 [错误 - 11:42:51 AM] 通知处理程序“textDocument/didChange”失败并显示消息:无法读取未定义的属性“charCount”
 /Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:2431
 childCharCount = child.charCount();
 ^

类型错误:无法读取未定义的属性“charCount”
 在 LineNode.walk (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:2431:35)
 在 LineIndex.edit (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:2304:27)
 在 ScriptVersionCache.getSnapshot (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:2086:39)
 在 ScriptVersionCache.latestVersion (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:2050:18)
 在 LSHost.getScriptVersion (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:542:29)
 在 TypeScriptServiceHost.getTemplates (/Users/mafredri/ng2-project/node_modules/@angular/language-service/bundles/language-service.umd.js:48312:39)
 在 LanguageServiceImpl.getDiagnostics (/Users/mafredri/ng2-project/node_modules/@angular/language-service/bundles/language-service.umd.js:47959:35)
 在 /Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:2686:72
 在时间 (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:2677:22)
 在 Object.getDiagnostics (/Users/mafredri/.vscode/extensions/Angular.ng-template-0.1.3/server/editorServices.js:2686:20)
 [信息 - 11:42:51 AM] 与服务器的连接已关闭。 服务器将重新启动。

@mafredri第二条评论中的错误可归因于将 TypeScript 更新为 2.1 以上。 editorServices.ts需要进行重大更改才能升级到 2.1,这就是该插件目前使用 2.1.5 的原因。

第一个评论我不知道。

如果您有一个,请考虑从您的项目中删除对@angular/language-service的开发依赖,以便它返回到使用语言服务的嵌入式版本。 如果您没有,请考虑在最新的@angular/language-service添加一个。

editorServices.ts 需要进行重大更改才能升级到 2.1,这就是该插件目前使用 2.1.5 的原因。

@chuckjaz我没有发现这种情况(可以在我的 PR #105 中看到)。 但我不能确定我没有忽略一些东西。

如果您有一个,请考虑从您的项目中删除对 @angular/language-service 的开发依赖,以便它返回到使用语言服务的嵌入式版本。

我确实将它作为开发依赖项,但是,我的 PR 分支运行良好,所以我不想恢复到旧版本的语言服务。

如何配置此插件“ Not To ”在特定文件夹中查找。 目前它正在从我在我的项目中提到的所有供应商(html 和 css)文件中抛出错误。
请帮忙

由于不活动,此问题已被自动锁定。
如果您遇到类似或相关的问题,请提交新问题。

阅读有关我们的自动对话锁定政策的更多信息。

_此操作已由机器人自动执行。_

此页面是否有帮助?
0 / 5 - 0 等级