๋ถ์์ ํ instanceof๋ฅผ ์์ฑํ๋ฉด Cannot read property 'id' of undefined
๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ค์ ์ ๋ ฅ ์ฝ๋๋ ๋ฌธ์ ๋ฅผ ์ฌํํด์ผ ํฉ๋๋ค.
var something = [];
if(something instanceof) {
// Notice the instanceof is missing the class name
}
ํ์ฌ JSHint 2.9.3์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
jshint v2.9.3์ด ์๋ ์์ ํจํค์ง linter-jshint ๋ฅผ ํตํด ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
Error: C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:5386
throw err;
^
TypeError: Cannot read property 'id' of undefined
at C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:2131:14
at Object.x.led (C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:1155:16)
at expression (C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:926:36)
at C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:2051:18
at Object.x.led (C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:1155:16)
at expression (C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:926:36)
at Object.fud (C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:4423:22)
at expression (C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:885:32)
at statement (C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:1636:9)
at statements (C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\jshint\src\jshint.js:1681:16)
at ChildProcess.<anonymous> (C:\Users\emile.bergeron.CAMINO\.atom\packages\linter-jshint\node_modules\atom-linter\node_modules\sb-exec\lib\index.js:56:20)
at emitTwo (events.js:100:13)
at ChildProcess.emit (events.js:185:7)
at maybeClose (internal/child_process.js:850:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:215:5)
๋ค์๊ณผ ๊ฐ์ ์ฃผ์์ ์ด ๋ ๋์ผํ ์ค๋ฅ:
module.exports = {
attributes: {},
/*sth: {},
sth2: function(){}
};
ํ์ฌ ํธ์ง ์ค์ธ ์ฝ๋์์ ์๋์ผ๋ก ์คํ๋๋ ๋๊ตฌ๋ก ์ธํด ๋ฐ์ํฉ๋๊น?
์์์์๋ linter-jshint๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ํด๋น ๋ด์ฉ์ผ๋ก ํ์ผ์ ์ ์ฅํ๊ณ CLI์์ jshint๋ฅผ ์คํํ ๋๋ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
jshint test.js
ํ์ผ์
module.exports = {
attributes: {},
/*sth: {}
};
์ค๋ฅ ์์ฑ:
/usr/local/lib/node_modules/jshint/src/jshint.js:5386
throw err;
^
TypeError: Cannot read property 'id' of null
at Object.x.nud (/usr/local/lib/node_modules/jshint/src/jshint.js:3240:26)
at expression (/usr/local/lib/node_modules/jshint/src/jshint.js:888:34)
at /usr/local/lib/node_modules/jshint/src/jshint.js:1389:20
at Object.x.led (/usr/local/lib/node_modules/jshint/src/jshint.js:1155:16)
at expression (/usr/local/lib/node_modules/jshint/src/jshint.js:926:36)
at statement (/usr/local/lib/node_modules/jshint/src/jshint.js:1636:9)
at statements (/usr/local/lib/node_modules/jshint/src/jshint.js:1681:16)
at itself (/usr/local/lib/node_modules/jshint/src/jshint.js:5365:9)
at lint (/usr/local/lib/node_modules/jshint/src/cli.js:495:8)
at /usr/local/lib/node_modules/jshint/src/cli.js:656:7
'๋ฏธ๋ซ์ด ๋๊ธ'๊ณผ ๊ฐ์ ํ์ฑ ์ค๋ฅ๊ฐ ์์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
#2932์ ๊ด๋ จ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ atom linter-jshint ์ ๊ฒฝ์ฐ ์ฌ์ ํ jshint v2.9.2์ ์์ต๋๋ค. Jshint๋ฅผ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด AtomLinter/linter-jshint#353 ๋ฌธ์ ๋ฅผ ์ฝ๋๋ค.
์ค์ ๋ก ๋ฒ์๋ฅผ ์ฌ์ฉํ๊ณ ์์ง๋ง ๋๋ถ๋ถ์ ์ฌ์ฉ์๋ฅผ ์ํด ํจํค์ง๋ฅผ ๋ค์ ์ค์นํด์ผ ํ๋ ์ ๋ฐ์ดํธ๋ก ๊ณ ์ ํ ๊ฒ์ ๋๋ค.
JSHint ๋ฐ๋ชจ ์์ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
ํ์ธ๋จ; ์ ๊ณ ๊ฐ์ฌํฉ๋๋ค! ์ด ๋ฒ๊ทธ๋ฅผ ์์ ํ๊ธฐ ์ํด ํจ์น๋ฅผ ์ ์ถํ์ต๋๋ค: https://github.com/jshint/jshint/pull/3046.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ํ์ธ๋จ; ์ ๊ณ ๊ฐ์ฌํฉ๋๋ค! ์ด ๋ฒ๊ทธ๋ฅผ ์์ ํ๊ธฐ ์ํด ํจ์น๋ฅผ ์ ์ถํ์ต๋๋ค: https://github.com/jshint/jshint/pull/3046.