关于前端使用Protobufjs解析后端传来的Protobuf出现非法buffer错误的解决方法

1,318 阅读1分钟

直接说原因吧~

protobuf.decode()接收的数据必要是Unit8Array的数据。所以前端接收到arrayBuffer时候需要进行转换成Unit8Array。下面列出转换方法,非常简单

//接收到的数据
let data=data
//进行Unit8Array转换
let Udata=new Unit8Array(data);protobuf.load('./index.proto')
.then(
    (root)=>{
        let message=root.lookupType('Message.center');
        //解析数据
        return message.decode(Udata);
    }
)
.catch(
    (err)=>{
        throw err;
    }
)