require-stack
Version:
Returns syntax error while requiring modules under try/catch, which is missing by default
65 lines (48 loc) • 1.96 kB
Markdown

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.
```javascript
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
It does all the hard work required to setup error stack which can be parsed by [https://www.npmjs.com/package/stack-trace](https://www.npmjs.com/package/stack-trace).
