当前位置: 首页 > 软件库 > Web应用开发 > Web框架 >

json-error

Error handler for pure-JSON apps
授权协议 MIT License
开发语言 JavaScript
所属分类 Web应用开发、 Web框架
软件类型 开源软件
地区 不详
投 递 者 盛承
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Koa JSON Error

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.

Requirements

  • node >=6.0.0
  • koa >=2.2.0

Starting from 3.2.0, this package supports node >=6.0.0 to match Koa requirements.

API

'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.

Basic usage

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.

Advanced usage

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