WebStorm, JSLint/JSHint: exception.stack causes "Undefined variable stack"
When I have code like this for Node.js under WebStorm 3.0 #WS-111.19:
try {
...
} catch (e) {
console.log(e.stack); // Actually doing something more useful with the stack:)
}
JSHint complains "Undefined variable stack". "Assume Node.js" is checked in WebStorm Preferences > Project Settings > Inspections > JSLint validation. It does not complain about e.message or e.path, and autocomplete offers message and path as defined in module.js under lib in the NodeJS sources.
I tried playing with /*global ...*/, but that seems to only affect top level names, not attributes. If I change it to e['stack'], I get a warning that it's "better written in dot notation", which I like and don't want to turn off.
How can I force it into JSHint/WebStorm's head that .stack is a valid field?
On a somewhat related note, I am having kind of a similar issue with a flags parsing library (nopt in particular, but they are all similar in this respect) -- it returns a map with flag-named attributes, which I like to reference as attributes not []-style. Right now I am working around it by saying
var flags = {flag1: undefined, flag2: undefined, ...};
flags = nopt(...);
but I would much rather just say var flags = nopt(...) and somehow suppress the warning for just these fields, or just the flags var, or just the lines where I access these fields. This is a slightly different issue, because for "e.stack" in the exceptions example above I don't want to have to suppress anything, because .stack is a perfectly valid predefined field, not something dynamically assigned by a custom library -- JSHint must realize that it's there, same as it does for .message and .path.
请先登录再写评论。
It seems it isn't about JSHint, because JSHint accepts all properties for any object without any restrictions.
I guess you have a problem that is depicted in the attached image - exception-stack-property.png.
If so, please file an issue about NodeJS integration -- accept e.stack if "Assume Node.js" option is checked.
Attachment(s):
exception-stack-property.png