Escrever uma instância incompleta de lança Cannot read property 'id' of undefined
.
O seguinte código de entrada deve reproduzir o problema:
var something = [];
if(something instanceof) {
// Notice the instanceof is missing the class name
}
Atualmente estou usando JSHint 2.9.3
Estou tendo esse problema através do pacote atom linter-jshint com jshint v2.9.3.
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)
Mesmo erro ao abrir comentário assim:
module.exports = {
attributes: {},
/*sth: {},
sth2: function(){}
};
Isso é causado por uma ferramenta que é executada automaticamente no código que está sendo editado no momento?
No atom eu uso linter-jshint. Mas também quando eu salvo o arquivo com esse conteúdo e executo o jshint da CLI, obtive o mesmo erro.
jshint test.js
no arquivo
module.exports = {
attributes: {},
/*sth: {}
};
gera erro:
/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
Eu acho que deve haver um erro de análise como 'comentário não fechado'.
Parece relacionado ao nº 2932.
E para atom linter-jshint , eles ainda estão no jshint v2.9.2. Abrindo o problema AtomLinter/linter-jshint#353 lá para atualizar o jshint.
Na verdade, está usando um intervalo, mas como a atualização exige a reinstalação do pacote para a maioria dos usuários, vou fixá-lo.
Posso confirmar que lança o mesmo erro na demonstração do JSHint .
Confirmado; obrigado pelo relato! Enviei um patch para corrigir esse bug: https://github.com/jshint/jshint/pull/3046.
Comentários muito úteis
Confirmado; obrigado pelo relato! Enviei um patch para corrigir esse bug: https://github.com/jshint/jshint/pull/3046.