1.安装jison
npm install jison -g
//本人电脑npm全局后还是找不到命令,结果用yarn安装后就好了
yarn Global add jison
2.下载 词表文件 - lexfile - jsonlint.l、语法文件 - grammFile - jsonlint.y
https://github.com/zaach/jsonlint
3.修改jsonlint.y词法文件:当整数超过了安全范围的时候,使用字符串表示
JSONNumber
: NUMBER
{ // If integer is too long, use string to store it
$$ = yytext == String(Number(yytext))? Number(yytext): yytext;
}
;
4.生成我们要的 jsonlint.js
jison jsonlint.y jsonlint.l
5.引入 jsonlint.js 至项目
//这里需要注意一点。可能需要安装file和system库
import jsonlint from './jsonlint'
6.修改umi-request请求
const request = extend({
errorHandler,
// 默认错误处理
credentials: 'include',
timeout: 5000,
responseType: 'text', // 转成文本,不要用json,json会自动转成object
getResponse: true,// 获取原始的response,然后处理
});
// 统一处理结果
request.use(async (ctx, next) => {
const { req } = ctx;
const { url, options } = req;
await next();
// 处理长整型的问题
const { res } = ctx;
const result = jsonlint.parse(res.data);
ctx.res = result;
});