Error handler for pure Koa >=2.0.0
JSON apps where showing the stack trace is cool!
npm install --save koa-json-error
Versions
>=3.0.0
support Koa^2.0.0
. For earlier versions of Koa, please use previous releases.
>=6.0.0
>=2.2.0
Starting from
3.2.0
, this package supports node>=6.0.0
to match Koa requirements.
'use strict';
const koa = require('koa');
const error = require('koa-json-error')
let app = new Koa();
app.use(error())
If you don't really feel that showing the stack trace is that cool, you can customize the way errors are shown on responses. There's a basic and more advanced, granular approach to this.
You can provide a single formatter function as an argument on middleware initialization. It receives the original raised error and it is expected to return a formatted response.
Here's a simple example:
'use strict';
const koa = require('koa');
const error = require('koa-json-error')
function formatError(err) {
return {
// Copy some attributes from
// the original error
status: err.status,
message: err.message,
// ...or add some custom ones
success: false,
reason: 'Unexpected'
}
}
let app = new Koa();
app.use(error(formatError));
This basic configuration is essentially the same (and serves as a shorthand for) the following:
'use strict';
let app = new Koa();
app.use(error({
preFormat: null,
format: formatError
}));
See section below.
You can also customize errors on responses through a series of three formatter functions, specified in an options
object. They receive the raw error object and return a formatted response. This gives you fine-grained control over the final output and allows for different formats on various environments.
You may pass in the options
object as argument to the middleware. These are the available settings.
options.preFormat (Function)
Perform some task before calling options.format
. Must be a function with the original err
as its only argument.
Defaults to:
(err) => Object.assign({}, err)
Which sets all enumerable properties of err
onto the formatted object.
options.format (Function)
Runs inmediatly after options.preFormat
. It receives two arguments: the original err
and the output of options.preFormat
. It should return
a newly formatted error.
Defaults to adding the following non-enumerable properties to the output:
const DEFAULT_PROPERTIES = [
'name',
'message',
'stack',
'type'
];
It also defines a status
property like so:
obj.status = err.status || err.statusCode || 500;
options.postFormat (Function)
Runs inmediatly after options.format
. It receives two arguments: the original err
and the output of options.format
. It should return
a newly formatted error.
The default is a no-op (final output is defined by options.format
).
This option is useful when you want to preserve the default functionality and extend it in some way.
For example,
'use strict';
const _ = require('lodash');
const koa = require('koa');
const error = require('koa-json-error')
let options = {
// Avoid showing the stacktrace in 'production' env
postFormat: (e, obj) => process.env.NODE_ENV === 'production' ? _.omit(obj, 'stack') : obj
};
let app = new Koa();
app.use(error(options));
Modifying the error inside the
*format
functions will mutate the original object. Be aware of that if any other Koa middleware runs after this one.
在写接口时,返回json格式且易读的错误提示是有必要的,koa-json-error中间件帮我们做到了 安装使用koa-json-error npm i koa-json-error -S const error = require('koa-json-error')` app.use(error({ postFormat: (e, { stack, ...rest }) => process
// 初始化 KETTLE_JSON_PLUGIN 插件在kettle目录下/plugins的路径 StepPluginType.getInstance().getPluginFolders().add(new PluginFolder(KETTLE_JSON_PLUGIN, false, true)); KettleEnvironment.init(); ---报错 2022/07/08 16:
TypeError: Converting circular structure to JSON –> starting at object with constructor ‘Socket’ | property ‘parser’ -> object with constructor ‘HTTPParser’ — property ‘socket’ closes the circle #在使用e
错误日志 [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4.233 s [INFO] Finished at: 2018-11-05T10:22:27+08:00 [INFO] --------------
现在JSON解析库满天飞,没有必要再自己写个了,除非是商业程序 。我试过JsonCPP, QJson, Json-Spirit, jaula等C++的库。遇到总总问题,有不支持中文(UTF-8编码也不行)、不方便在Windows下编译、体积过于臃肿等毛病,最终的选择是C库 json-c,因为Google看到一篇文章对JSON的各个C库的优点比较,说Json-C兼容性最好,而且支持
转自:http://blog.csdn.net/u013393502/article/details/49226531 zmap的安装可以到官方网站https://www.zmap.io/去看看,点击download,提供了两种安装方式。 软件包方式安装: 1.通过apt-get install zmap或yum install zmap安装软件包的方式直接安装。 如果通过apt-get或yum无
JsonUtil.fromJson(str, XXXclass.class); Error log: No suitable constructor found for type [simple type, XXXclass… 原因:该类中缺少一个缺省构造 需要添加缺省构造函数 public XXXclass() { }
vue sessionStorage TypeError: Converting circular structure to JSON vue-admin-template顶部网页加载横条特别慢,打开浏览器调试界面,发现报错TypeError: Converting circular structure to JSON --> starting at object with constructor
在使用JSON.stringify方法去转化成字符串,会报错TypeError: Converting circular structure to JSON 原因: 对象中有对自身的循环引用; 例如: let test = { a: 1, b: 2 }; test.c = test; // 循环引用 JSON.stringify(test); // 报错 解决方法: 下面的 json_str 就
问题:运行npm run serve时报错 Error: Cannot find module 'json-parse-better-errors' Require stack: (下面还有几行我省略了) 解决方法: 一种方法:一般这种情况都是node_modules出了问题,把node_modules文件夹删掉然后重新下载,但是操作完后不是每个人都能完美解决; npm clean cache
注意,这一节的内容最早由 Pascal Voitot 发表在 mandubian.com 上。(文章太旧,请带着批判的眼光去读。) 现在已经知道如何验证 JSON,以及如何将 JSON 转成任意结构或将任意结构转成 JSON。但当我开始用那些组合子来写 web 应用,我立即遇到了这样的情况:从网络中读取 JSON,验证它然后再将它转成 JSON。 JSON coast-to-coast 设计介绍
Hutool-json 为何集成 JSON在现在的开发中做为跨平台的数据交换格式已经慢慢有替代XML的趋势(比如RestFul规范),我想大家在开发中对外提供接口也越来越多的使用JSON格式。 不可否认,现在优秀的JSON框架非常多,我经常使用的像阿里的FastJSON,Jackson等都是非常优秀的包,性能突出,简单易用。Hutool开始也并不想自己写一个JSON,但是在各种工具的封装中,发现J
不像一些其他语言,Java没有对JSON提供一流的支持,所以我们提供了两个类,来使你的应用程序Vert.x处理JSON更容易一点。 JSON 对象 JsonObject类表示 JSON 对象。 JSON对象基本上是有字符串键和值的map,值可以是JSON的一个支持的类型(字符串,数字,布尔值)。 JSON 对象还支持 null 值。 创建 JSON 对象 可以使用默认的构造函数创建空的 JSON
4.5. JSON JavaScript对象表示法(JSON)是一种用于发送和接收结构化信息的标准协议。在类似的协议中,JSON并不是唯一的一个标准协议。 XML(§7.14)、ASN.1和Google的Protocol Buffers都是类似的协议,并且有各自的特色,但是由于简洁性、可读性和流行程度等原因,JSON是应用最广泛的一个。 Go语言对于这些标准格式的编码和解码都有良好的支持,由标准库
JSON is a data format that is common in configuration files like package.json or project.json. We also use it extensively in VS Code for our configuration files. When opening a file that ends with .js
JsonMapper in SpringSide-Core JsonMapper是对Jackson的Object Mapper的简单封装,提供如下函数: static JsonMapper buildNonNullMapper()及其他,提供构造NON_NULL,NON_EMPTY,NON_DEFAULT值Mapper的工厂方法,详见后面的例子。 String toJson(Object obje
XStream通过使用适当的驱动程序初始化XStream对象来支持JSON。 XStream目前支持JettisonMappedXmlDriver和JsonHierarchicalStreamDriver。 现在让我们在XStream中使用json处理来测试代码。 在C:\> XStream_WORKSPACE\com\wenjiangs\xstream中创建名为XStreamTester的jav
本章介绍如何使用Groovy语言解析和生成JSON对象。 JSON函数 (JSON Functions) Sr.No 功能与图书馆 1 JsonSlurper JsonSlurper是一个将JSON文本或读者内容解析为Groovy数据的类 结构,如地图,列表和原始类型,如Integer,Double,Boolean和String。 2 JsonOutput 此方法负责将Groovy对象序列化为JS