我最近注意到语言服务停止工作并开始在控制台中看到以下内容:
致命错误: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.1
或4.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
在对 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)文件中抛出错误。
请帮忙
最有用的评论
@mafredri第二条评论中的错误可归因于将 TypeScript 更新为 2.1 以上。
editorServices.ts
需要进行重大更改才能升级到 2.1,这就是该插件目前使用 2.1.5 的原因。第一个评论我不知道。
如果您有一个,请考虑从您的项目中删除对
@angular/language-service
的开发依赖,以便它返回到使用语言服务的嵌入式版本。 如果您没有,请考虑在最新的@angular/language-service
添加一个。