Security News
Cloudflare Adds Security.txt Setup Wizard
Cloudflare has launched a setup wizard allowing users to easily create and manage a security.txt file for vulnerability disclosure on their websites.
jsonify-error
Advanced tools
Get a plain object fully representing the error for better logs and server responses.
It's 2018 and neither JSON.stringify(e)
nor console.log(e)
behave as nicely as they could when e
is an error.
With jsonify-error, use jsonifyError(e)
instead of e
. It produces a plain object with everything one could wish to see about an error.
For browsers, simply include one of the dists in your entry point, such as dist/jsonify-error.js
. The dists are available in jsDelivr:
<script src="https://cdn.jsdelivr.net/npm/jsonify-error@1.3.0/dist/jsonify-error.js" integrity="sha384-n9I+URPQ8PzrWft0T/DU2koP/WJ1R56t1OGcaWwUaBFrPLkH63jiI3P+vVolz14b" crossorigin="anonymous"></script>
The following dists are available (with source maps):
dist/jsonify-error.js
dist/jsonify-error.min.js
dist/jsonify-error.es5.js
dist/jsonify-error.es5.min.js
In node, as usual, simply do:
npm install --save jsonify-error
The resulting plain object has the form:
{
"name": "TypeError",
"className": "TypeError",
"message": "It can't be a string",
"superclasses": ["Error", "Object"],
"enumerableFields": {
// If the error has other fields they appear here (including in the prototype chain):
"someField": "someValue"
},
"stack": [
"TypeError: It can't be a string",
"at z (E:\\test.js:15:15)",
"at E:\\test.js:10:9",
"at Array.forEach (native)",
"at y (E:\\test.js:9:13)",
"at x (E:\\test.js:5:5)",
"at w (E:\\test.js:24:9)",
"at Object.<anonymous> (E:\\test.js:32:1)",
"at Module._compile (module.js:570:32)",
"at Object.Module._extensions..js (module.js:579:10)",
"at Module.load (module.js:487:32)"
]
}
var jsonifyError = require("jsonify-error");
try {
// ...
} catch (e) {
console.error(jsonifyError(e));
process.exit(1);
}
For better error logs of unhandled errors in promises, the recommended solution is to use the sibling module, better-promise-error-log. But if you insist, you can do:
var jsonifyError = require("jsonify-error");
somethingAsync().then(() => {
// ...
}).catch(error => {
console.error(jsonifyError(e));
// process.exit(1); // Exiting or not depends on your situation
});
var jsonifyError = require("jsonify-error");
app.get('/your/api', (req, res) => {
// ...
// Instead of res.status(500).json(error), do:
res.status(500).json(jsonifyError(error));
});
require("jsonify-error").overrideConsole();
// Now console.log, console.warn and console.error automatically
// call jsonifyError() on each argument that is instanceof Error
// before logging. Note that overriding native functions/objects
// is usually not a good practice so use this with caution.
Note: since 1.2.0, you can simply console.log(jsonifyError(anything))
if you prefer, because if anything
is not an error, jsonifyError
will not touch it at all.
Any contribution is very welcome. Feel free to open an issue about anything: questions, suggestions, feature requests, bugs, improvements, mistakes, whatever. I will be always looking.
The changelog is available in CHANGELOG.md.
MIT (c) Pedro Augusto de Paula Barbosa
[1.3.0] - 2018-08-15
browser
field in package.json
altogether (#5)FAQs
Convert errors to JSON or to a good string. Develop faster with better error messages.
The npm package jsonify-error receives a total of 1,345 weekly downloads. As such, jsonify-error popularity was classified as popular.
We found that jsonify-error 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
Cloudflare has launched a setup wizard allowing users to easily create and manage a security.txt file for vulnerability disclosure on their websites.
Security News
The Socket Research team breaks down a malicious npm package targeting the legitimate DOMPurify library. It uses obfuscated code to hide that it is exfiltrating browser and crypto wallet data.
Security News
ENISA’s 2024 report highlights the EU’s top cybersecurity threats, including rising DDoS attacks, ransomware, supply chain vulnerabilities, and weaponized AI.