require-stack
v1.0.2
Published
Returns syntax error while requiring modules under try/catch, which is missing by default
Downloads
20,648
Maintainers
Readme
Require Stack
Nodejs require method does not provide filename or line number for syntax errors when requiring modules under try/catch statement. Ideally it is not the problem with Node Js, it has something to do with v8 itself.
Require Stack
is a wrapper around require
method, which makes it easier to get syntax error with proper error stack when wrapping require call under try/catch
block.
Using Node Js
try{
require('./module/with/syntax/error')
}catch(e){
console.log(e.stack)
}
above prints
SyntaxError: Unexpected token {
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:413:25)
at Object.Module._extensions..js (module.js:452: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> (/Users/harmindervirk/workspace/personal/active-packages/require-stack/index.js:11:3)
at Module._compile (module.js:434:26)
at Object.Module._extensions..js (module.js:452:10)
Which is no reference to the filename or linenumber where syntax error has occured. File reference on line number 9 is the file from where code is executed.
Using require stack
var requireStack = require('require-stack')
try{
requireStack('./module/with/syntax/error')
}catch(e){
console.log(e.stack)
}
above prints
/Users/harmindervirk/workspace/personal/active-packages/require-stack/test/modules/index.js:2
return {
^
ParseError: Unexpected token
Which has reference to the filename with exact line number
Bonus
It does all the hard work required to setup error stack which can be parsed by https://www.npmjs.com/package/stack-trace.