Vscode-ng-language-service: ์–ธ์–ด ์„œ๋น„์Šค ์ถฉ๋Œ(Angular 4.1.2์—์„œ): JavaScript ํž™์ด ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ

์— ๋งŒ๋“  2017๋…„ 05์›” 14์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: angular/vscode-ng-language-service

๋‚˜๋Š” ์ตœ๊ทผ์— ์–ธ์–ด ์„œ๋น„์Šค๊ฐ€ ์ž‘๋™์„ ๋ฉˆ์ถ”๊ณ  ์ฝ˜์†”์— ๋‹ค์Œ์ด ํ‘œ์‹œ๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Œ์„ ์•Œ์•„์ฐจ๋ ธ์Šต๋‹ˆ๋‹ค.


์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜: CALL_AND_RETRY_LAST ํ• ๋‹น ์‹คํŒจ - JavaScript ํž™ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ

 ๊ฐ๋„ ์–ธ์–ด ์„œ๋น„์Šค: 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

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@mafredri ๋‘ ๋ฒˆ์งธ ์ฃผ์„์˜ ์˜ค๋ฅ˜๋Š” TypeScript๋ฅผ 2.1 ์ด์ƒ์œผ๋กœ ์—…๋ฐ์ดํŠธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. editorServices.ts 2.1 ์ด์ƒ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๋ฉด ์ƒ๋‹นํ•œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ˜„์žฌ 2.1.5๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

1๋„ ๋ชจ๋ฅด๋Š” ์ฒซ๋Œ“๊ธ€.

ํ•˜๋‚˜๊ฐ€ ์žˆ๋‹ค๋ฉด ํ”„๋กœ์ ํŠธ์—์„œ @angular/language-service ์— ๋Œ€ํ•œ dev ์ข…์†์„ฑ์„ ์ œ๊ฑฐํ•˜์—ฌ ์–ธ์–ด ์„œ๋น„์Šค์˜ ํฌํ•จ๋œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ์—†๋Š” ๊ฒฝ์šฐ ์ตœ์‹  @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("๊ธธ์ด < 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์—์„œ [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] ์„œ๋ฒ„ ์—ฐ๊ฒฐ์ด ๋Š๊ฒผ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.


TypeError: ์ •์˜๋˜์ง€ ์•Š์€ '์ข…๋ฅ˜' ์†์„ฑ์„ ์ฝ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 /Users/mafredri/ng2-project/node_modules/@angular/language-service/bundles/language-service.umd.js:43244
 ์Šค์œ„์น˜(๋…ธ๋“œ ์ข…๋ฅ˜) {
 ^^

 TypeError: ์ •์˜๋˜์ง€ ์•Š์€ '์ข…๋ฅ˜' ์†์„ฑ์„ ์ฝ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
 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] ์„œ๋ฒ„ ์ ‘์†์ด ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.


TypeError: null์˜ '๋ฉ”ํƒ€๋ฐ์ดํ„ฐ' ์†์„ฑ์„ ์ฝ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 /Users/mafredri/ng2-project/node_modules/@angular/language-service/bundles/language-service.umd.js:48425
 var _d = this.resolver.getNonNormalizedDirectiveMetadata(directive.reference), ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ = _d.metadata, ์ฃผ์„ = _d.annotation;
 ^^

 TypeError: 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' ์†์„ฑ์„ ์ฝ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
 TypeError: ์ •์˜๋˜์ง€ ์•Š์€ '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();
 ^^

 TypeError: ์ •์˜๋˜์ง€ ์•Š์€ '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๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

1๋„ ๋ชจ๋ฅด๋Š” ์ฒซ๋Œ“๊ธ€.

ํ•˜๋‚˜๊ฐ€ ์žˆ๋‹ค๋ฉด ํ”„๋กœ์ ํŠธ์—์„œ @angular/language-service ์— ๋Œ€ํ•œ dev ์ข…์†์„ฑ์„ ์ œ๊ฑฐํ•˜์—ฌ ์–ธ์–ด ์„œ๋น„์Šค์˜ ํฌํ•จ๋œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ์—†๋Š” ๊ฒฝ์šฐ ์ตœ์‹  @angular/language-service ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

editorServices.ts๋Š” 2.1 ์ดํ›„๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๋ฉด ์ƒ๋‹นํ•œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ˜„์žฌ 2.1.5๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

@chuckjaz ๋‚˜๋Š”

์žˆ๋Š” ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ์—์„œ @angular/language-service์— ๋Œ€ํ•œ dev ์ข…์†์„ฑ์„ ์ œ๊ฑฐํ•˜์—ฌ ์–ธ์–ด ์„œ๋น„์Šค์˜ ํฌํ•จ๋œ ๋ฒ„์ „ ์‚ฌ์šฉ์œผ๋กœ ๋Œ์•„๊ฐ€๋„๋ก ํ•˜์‹ญ์‹œ์˜ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ dev ์˜์กด์„ฑ์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ ๋‚ด PR ๋ธŒ๋žœ์น˜๋Š” ์ž˜ ์ž‘๋™ํ•˜๋ฏ€๋กœ ์ด์ „ ๋ฒ„์ „์˜ ์–ธ์–ด ์„œ๋น„์Šค๋กœ ๋˜๋Œ๋ฆฌ์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

ํŠน์ • ํด๋”์—์„œ ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ " Not To "๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๊นŒ? ํ˜„์žฌ ๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ ์ฐธ์กฐํ•˜๋Š” ๋ชจ๋“  ๊ณต๊ธ‰์—…์ฒด(html ๋ฐ css) ํŒŒ์ผ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๋„์™€์ฃผ์„ธ์š”

์ด ๋ฌธ์ œ๋Š” ํ™œ๋™์ด ์—†์–ด ์ž๋™์œผ๋กœ ์ž ๊ฒผ์Šต๋‹ˆ๋‹ค.
์œ ์‚ฌํ•˜๊ฑฐ๋‚˜ ๊ด€๋ จ๋œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ƒˆ ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์‹ญ์‹œ์˜ค.

์ž๋™ ๋Œ€ํ™” ์ž ๊ธˆ ์ •์ฑ… ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.

_์ด ์ž‘์—…์€ ๋ด‡์— ์˜ํ•ด ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค._

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰