
Security News
Axios Maintainer Confirms Social Engineering Attack Behind npm Compromise
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.
Nested Error ES6 class
npm install --save nerror
An abstract example
const NError = require('nerror');
try {
try {
try {
let error = new Error('Some DB error');
error.code = 42000;
throw error;
} catch (error) {
throw new NError(error, { sqlState: error.code }, 'Could not insert row');
}
} catch (error) {
throw new NError(error, { customerId: 9000 }, 'Could not create user');
}
} catch (error) {
console.log(error.messages, JSON.stringify(error.info, undefined, 4));
/* Could not create user: Could not insert row: Some DB error {
"sqlState": 42000,
"customerId": 9000
} */
console.log(error.fullStack);
/* NError: Could not create user
at Object.<anonymous> (/home/ross/tmp/nerror/test.js:13:15)
at Module._compile (module.js:570:32)
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.runMain (module.js:604:10)
at run (bootstrap_node.js:393:7)
at startup (bootstrap_node.js:150:9)
at bootstrap_node.js:508:3
NError: Could not insert row
at Object.<anonymous> (/home/ross/tmp/nerror/test.js:10:19)
at Module._compile (module.js:570:32)
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.runMain (module.js:604:10)
at run (bootstrap_node.js:393:7)
at startup (bootstrap_node.js:150:9)
at bootstrap_node.js:508:3
Error: Some DB error
at Object.<anonymous> (/home/ross/tmp/nerror/test.js:6:25)
at Module._compile (module.js:570:32)
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.runMain (module.js:604:10)
at run (bootstrap_node.js:393:7)
at startup (bootstrap_node.js:150:9)
at bootstrap_node.js:508:3 */
}
parent is optional parent error instance
info is optional information attached to the error. it will be merged with parents' info objects
...args - rest is usual Error constructor arguments
The following are all valid constructor calls:
new NError('Error occurred') // just like usual Error
new NError(new Error('Test'), 'Error occurred') // pass the parent
new NError({ someKey: "some value" }, 'Error occurred') // pass info
new NError(new NError('Some error'), { key: 'value' }, 'Error occurred') // do both
Parent error accessor
Combined information created by merging infos of all the parent chain
Combined messages of all the parents
Combined stack info of all the parents
Convert this error chain to an array. Consider the following example:
let err1 = new Error('1');
let err2 = new NError(err1, '2');
let err3 = new NError(err2, '3');
err3.toArray() will return: [ err3, err2, err1 ]
FAQs
Nested Error ES6 class
We found that nerror demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.