Typescript: collectEnclosingScopes์—์„œ ์ •์˜๋˜์ง€ ์•Š์€ 'parent'ํŠน์„ฑ์„ ์ฝ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 03์›” 21์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: microsoft/TypeScript


TypeScript ๋ฒ„์ „ : 3.4.0-rc

๊ณค์ถฉ

VS Code์—์„œ ์ผ๋ถ€ ์ฝ”๋“œ๋ฅผ ํŽธ์ง‘ํ•˜๋Š” ๋™์•ˆ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„์ง repo ๋‹จ๊ณ„๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

  ERR TypeScript Server Error (3.4.0-rc)
Cannot read property 'parent' of undefined
TypeError: Cannot read property 'parent' of undefined
    at collectEnclosingScopes (tsserver.js:117195:127)
    at getPossibleExtractionsWorker (tsserver.js:117275:30)
    at getPossibleExtractions (tsserver.js:117232:26)
    at Object.getAvailableActions (tsserver.js:116745:35)
    at tsserver.js:111488:128
    at getIterator (tsserver.js:625:23)
    at Object.next (tsserver.js:620:35)
    at Object.arrayFrom (tsserver.js:1253:32)
    at Object.getApplicableRefactors (tsserver.js:111487:23)
    at Proxy.getApplicableRefactors (tsserver.js:121287:32)
    at IOSession.Session.getApplicableRefactors (tsserver.js:130013:53)
    at Session.handlers.ts.createMapFromTemplate._a.(anonymous function) (tsserver.js:128853:61)
    at tsserver.js:130237:88
    at IOSession.Session.executeWithRequestId (tsserver.js:130228:28)
    at IOSession.Session.executeCommand (tsserver.js:130237:33)
    at IOSession.Session.onMessage (tsserver.js:130259:35)
    at Interface.<anonymous> (tsserver.js:131556:27)
    at Interface.emit (events.js:182:13)
    at Interface._onLine (readline.js:290:10)
    at Interface._normalWrite (readline.js:433:12)
    at Socket.ondata (readline.js:149:10)
    at Socket.emit (events.js:182:13)
    at addChunk (_stream_readable.js:279:12)
    at readableAddChunk (_stream_readable.js:264:11)
    at Socket.Readable.push (_stream_readable.js:219:10)
    at Pipe.onread (net.js:636:20): Error: TypeScript Server Error (3.4.0-rc)

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

๋น„์Šทํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

TypeScript ๋ฒ„์ „ : 3.7.1-rc , 3.7.2 , 3.7.3-insiders.20191123

์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ <=3.6.4

TypeError: Cannot read property 'parent' of undefined
    at Object.getDeclarationOfExpando (/<redacted>/node_modules/typescript/lib/tsc.js:8604:19)
    at getTypeOfFuncClassEnumModule (/<redacted>/node_modules/typescript/lib/tsc.js:32596:40)
    at getTypeOfSymbol (/<redacted>/node_modules/typescript/lib/tsc.js:32702:24)
    at getExternalModuleMember (/<redacted>/node_modules/typescript/lib/tsc.js:28512:64)
    at getTargetOfExportSpecifier (/<redacted>/node_modules/typescript/lib/tsc.js:28557:17)
    at getTargetOfAliasDeclaration (/<redacted>/node_modules/typescript/lib/tsc.js:28600:28)
    at resolveAlias (/<redacted>/node_modules/typescript/lib/tsc.js:28633:30)
    at resolveSymbol (/<redacted>/node_modules/typescript/lib/tsc.js:28623:67)
    at getSymbolIfSameReference (/<redacted>/node_modules/typescript/lib/tsc.js:29170:33)
    at /<redacted>/node_modules/typescript/lib/tsc.js:29164:21

๋ชจ๋“  3 ๋Œ“๊ธ€

์ฝ”๋“œ์—์„œ ์ด๊ฒƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜์žˆ๋Š” ์œ ์ผํ•œ ์œ„์น˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

        while (true) {
            current = current.parent;
            // A function parameter's initializer is actually in the outer scope, not the function declaration
            if (current.kind === SyntaxKind.Parameter) {
                // Skip all the way to the outer scope of the function that declared this parameter
                current = findAncestor(current, parent => isFunctionLikeDeclaration(parent))!.parent;
            }

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ตœ์ƒ์œ„ ์ˆ˜์ค€ ๊ทผ์ฒ˜์˜ JSDoc ๋‚ด๋ถ€์—์„œ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ฐพ์€ ๋‹ค์Œ ๋‘˜๋Ÿฌ์‹ธ๋Š” ํ•จ์ˆ˜ decl๋กœ ๊ฑธ์–ด ๊ฐ€๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ํ•˜๋‚˜๋ฅผ ์ฐพ์ง€ ๋ชปํ•ด ๋ฐ”๋‹ฅ์— ๋–จ์–ด ์กŒ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

findAncestor(...)! ์€ (๋Š”) ๋งค์šฐ ์˜์‹ฌ์Šค๋Ÿฝ๊ณ  ๊ธˆ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค ...

๋น„์Šทํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „ : typescript 3.7.0-dev.20191017

ERROR in ./node_modules/hammerjs/hammer.js                                         
Module build failed (from ./node_modules/ts-loader/index.js):                       
TypeError: Cannot read property 'parent' of undefined                               
    at getOuterTypeParameters (/<redacted>/node_modules/typescript/lib/typescript.js:39886:29)                                   
    at getOuterTypeParametersOfClassOrInterface (/<redacted>/node_modules/typescript/lib/typescript.js:39944:20)
    at getDeclaredTypeOfClassOrInterface (/<redacted>/node_modules/typescript/lib/typescript.js:40217:43)
    at createAnonymousTypeNode (/<redacted>/node_modules/typescript/lib/typescript.js:36601:59)
    at typeToTypeNodeHelper (/<redacted>/node_modules/typescript/lib/typescript.js:36547:28)                                     
    at /<redacted>/node_modules/typescript/lib/typescript.js:36336:106
    at withContext (/<redacted>/node_modules/typescript/lib/typescript.js:36381:37)
    at Object.typeToTypeNode (/<redacted>/node_modules/typescript/lib/typescript.js:36336:28)
    at typeToString (/<redacted>/node_modules/typescript/lib/typescript.js:36303:40)                                             
    at reportNonexistentProperty (/<redacted>/node_modules/typescript/lib/typescript.js:54143:165)

๋น„์Šทํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

TypeScript ๋ฒ„์ „ : 3.7.1-rc , 3.7.2 , 3.7.3-insiders.20191123

์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ <=3.6.4

TypeError: Cannot read property 'parent' of undefined
    at Object.getDeclarationOfExpando (/<redacted>/node_modules/typescript/lib/tsc.js:8604:19)
    at getTypeOfFuncClassEnumModule (/<redacted>/node_modules/typescript/lib/tsc.js:32596:40)
    at getTypeOfSymbol (/<redacted>/node_modules/typescript/lib/tsc.js:32702:24)
    at getExternalModuleMember (/<redacted>/node_modules/typescript/lib/tsc.js:28512:64)
    at getTargetOfExportSpecifier (/<redacted>/node_modules/typescript/lib/tsc.js:28557:17)
    at getTargetOfAliasDeclaration (/<redacted>/node_modules/typescript/lib/tsc.js:28600:28)
    at resolveAlias (/<redacted>/node_modules/typescript/lib/tsc.js:28633:30)
    at resolveSymbol (/<redacted>/node_modules/typescript/lib/tsc.js:28623:67)
    at getSymbolIfSameReference (/<redacted>/node_modules/typescript/lib/tsc.js:29170:33)
    at /<redacted>/node_modules/typescript/lib/tsc.js:29164:21
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰