不完全なinstanceofを書き込むと、 Cannot read property 'id' of undefined
がスローされます。
次の入力コードで問題が再現されます。
var something = [];
if(something instanceof) {
// Notice the instanceof is missing the class name
}
現在、JSHint2.9.3を使用しています
この問題は、jshintv2.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
'unclosedcomment'のような解析エラーがあるはずだと思います。
#2932に関連しているようです。
そして、atom linter-jshintの場合、それらはまだjshintv2.9.2にあります。 jshintを更新するためにAtomLinter / linter-jshint#353の問題を開きます。
実際には範囲を使用していますが、ほとんどのユーザーがパッケージを再インストールする必要がある更新として、ピン留めするだけです。
JSHintデモでも同じエラーが発生することを確認できます。
確認済み; レポートありがとうございます! このバグを修正するパッチを送信しました: https://github.com/jshint/jshint/pull/3046。
最も参考になるコメント
確認済み; レポートありがとうございます! このバグを修正するパッチを送信しました: https://github.com/jshint/jshint/pull/3046。