Repository navigation
v4.0.0 doesn't give file/line for wrong syntax. #2762
Description
Activity
You can start your investigation by examining what's on line 11 in
/Users/bobi/Dev/prototype-js/tests/tests.jsI did and my investigation led to the conclusion that SyntaxError doesn't contain file/line information, so I posted here. Line 11 is
console.error( e.stack ), and e is the exception fromon( 'unhandledException' ). Ande.lineNumberand the others described in MDN areundefined.Try removing the unhandled exception callback. I think, if it's a syntax error, you'll get a cleaner stack trace, because the interpreter will break on the exact line and column, where the unexpected identifier was met.
- addedquestionIssues asking questions about Node.js.Issues asking questions about Node.js.
on Sep 9, 2015 Can you put the first 15 or so lines of
/Users/bobi/Dev/prototype-js/tests/tests.jsin a gist and link to it here?- You can see the whole file if you like. https://github.com/Perennials/prototype-js/blob/master/tests/tests.js
- I will give way to reproduce later when I get to the office.
So here is how to reproduce:
mkdir dir cd dir npm install https://github.com/Perennials/prototype-js/tarball/master cd node_modules/Prototype npm install ### Break the syntax somewhere. Edit tests/Function.js:120 and change it to "iface1_decl {}" npm test
And the line that prints the error is
nodule_modules/Prototype/node_modules/Unitest/Unitest.js:569. And if you remove the uncaughtException handler the error is not printed for some reason.I too ran into this issue when trying to process a syntax error after adding an
uncaughtExceptionhandler. It seems that behavior prior to v4 might have been that the syntax error information (filename and line number) were printed to stderr regardless of the uncaughtException handler (the exception still given to the handler tho).I don't see a way to get the fileName or lineNumber information from the error. Using
toString()simply results in the messageSyntaxError: Unexpected identifier.Seems that behavior might be slightly different with these errors on startup versus before.
Any updates on this? It makes it rather multi-step (annoying) to debug syntax error when using tools like
node-devor even with your own uncaughtException handlers. This might not be obvious to users./cc @bnoordhuis @rvagg @mikeal
cc @nodejs/collaborators could we get more eyes on this?
This is present in v3 too.
Also, the line number in the stack trace is like that in all versions of node. What's wrong is that the extra context info lines are missing.
v3/v4:
> Prototype@1.6.0 test /node_modules/Prototype > node ./tests/tests.js SyntaxError: Unexpected token { at exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:413:25) at Object.Module._extensions..js (module.js:448:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Module.require (module.js:365:17) at require (module.js:384:17) at Object.<anonymous> (/node_modules/Prototype/tests/tests.js:11:1) at Module._compile (module.js:430:26) at Object.Module._extensions..js (module.js:448:10)others:
> Prototype@1.6.0 test /node_modules/Prototype > node ./tests/tests.js /node_modules/Prototype/tests/Function.js:120 iface1_decl {} ^ SyntaxError: Unexpected token { at exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:413:25) at Object.Module._extensions..js (module.js:448:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Module.require (module.js:365:17) at require (module.js:384:17) at Object.<anonymous> (/node_modules/Prototype/tests/tests.js:11:1) at Module._compile (module.js:430:26) at Object.Module._extensions..js (module.js:448:10)Notice the bit with the ^ in it. Probably something changed in V8. Not sure if there's anything we can do about it, but I'll let some others have a look.
This is probably a result of the change in #2108. Strange, I thought we had tests for this...
Is this going to be considered a regression?
- added a commit that references this issue
on Nov 25, 2015 1 remaining item
- added a commit that references this issue
on Dec 5, 2015 - added a commit that references this issue
on Jan 7, 2016 - added a commit that references this issue
on Jan 19, 2016 function buildBundle(args, config, output = outputBundle) {
^SyntaxError: Unexpected token =
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:404:25)
at loader (/Users/rajesh/iosapp/adminLogin/node_modules/babel-register/lib/node.js:130:5)
at Object.require.extensions.(anonymous function) as .js
at Module.load (module.js:356:32)
at Function.Module._load (module.js:311:12)
at Module.require (module.js:366:17)
at require (module.js:385:17)
at Object. (bundle.js:11:21)
at Module._compile (module.js:425:26)@nodejs/collaborators ... any further thoughts on this?
@jasnell I believe this should be fixed in master.
Closing then, can reopen if it proves necessary.
- added a commit that references this issue
on Apr 2, 2016 How can this issue be closed, without a solution over it?
Someone, please help how to get rid of this?SyntaxError: Unexpected token ... at exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:373:25) at Object.Module._extensions..js (module.js:416:10) at Module.load (module.js:343:32) at Function.Module._load (module.js:300:12) at Module.require (module.js:353:17) at require (internal/module.js:12:17) at Object.<anonymous> (C:\Users\Rahul Reddy\AppData\Roaming\npm\node_modules\angular-cli\node_modules\@ngtools\json-schema\src\index.js:2:30) at Module._compile (module.js:409:26) at Object.Module._extensions..js (module.js:416:10)@mrahulreddy what version of Node did you see this with? If the issue has been fixed on
master, it should be backported tov7.xand thenv6.xandv4.xlater.Could you check whether the latest
nightlybuilds give the error for you? You can find them on https://nodejs.org/download/nightly/v8.0.0-nightly201702238e8fbd80d0/Hello @gibfahn:
I appreciate your quick reply,I am using v4.4.7.
Even
ng versiongives the same error.I believe this should be fixed in master.
Do you know which PRs should have fixed it?
@mrahulreddy the question is whether the changes have been backported to the latest v4 or v6. v4.4.7 definitely won't work, try
v4.8.0(the latest v4), or the latest v6 or v7.I just verified that this is addressed in node 6 (I tested w/ 6.9.5). The pretty-printed output about the syntax error is included at the top of
.stack, followed by the standardname: message\nraw and dirty stackstuff.Specifically:
In Node 4.3.0 I get:
error: A hook (`userconfig`) failed to load! error: Error: Attempted to `require('/Users/mikermcneil/code/inabottle/config/datastores.js')`, but an error occurred: -- SyntaxError: Unexpected token ILLEGAL at exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:374:25) at Object.Module._extensions..js (module.js:417:10) at Module.load (module.js:344:32) at Function.Module._load (module.js:301:12) at Module.require (module.js:354:17) at require (internal/module.js:12:17) at /Users/mikermcneil/code/include-all/lib/help-include-all-sync.js:293:33 at Array.forEach (native) at _recursivelyIncludeAll (/Users/mikermcneil/code/include-all/lib/help-include-all-sync.js:178:11) --Whereas in Node v6.9.5, I get:
error: A hook (`userconfig`) failed to load! error: Error: Attempted to `require('/Users/mikermcneil/code/inabottle/config/datastores.js')`, but an error occurred: -- /Users/mikermcneil/code/inabottle/config/datastores.js:19 adapter: 2#_ r32equire('sails-mysql'), ^ SyntaxError: Invalid or unexpected token at Object.exports.runInThisContext (vm.js:76:16) at Module._compile (module.js:542:28) at Object.Module._extensions..js (module.js:579:10) at Module.load (module.js:487:32) at tryModuleLoad (module.js:446:12) at Function.Module._load (module.js:438:3) at Module.require (module.js:497:17) at require (internal/module.js:20:19) at /Users/mikermcneil/code/include-all/lib/help-include-all-sync.js:293:33 at Array.forEach (native) --Make sure that you have installed latest LTS version of nodeJS from https://nodejs.org/
As described in package.json
`
"engines": {"node": ">=6"}`
I'm happily moving some of my stuff to ES6 but when I wrong the syntax I get SyntaxError which goes to my
on( 'unhandledException' )and I print it to get message like this. Not very helpful.