美文网首页
umi-reqeust请求后,长整型精度丢失

umi-reqeust请求后,长整型精度丢失

作者: Bana | 来源:发表于2020-08-17 19:18 被阅读0次

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;
});

相关文章

网友评论

      本文标题:umi-reqeust请求后,长整型精度丢失

      本文链接:https://www.haomeiwen.com/subject/igzqjktx.html