vue3 使用protobuf

参考文章链接 https://blog.csdn.net/jmszl1991/article/details/124817947

在vue3中使用protobuf可以参考上文,我在此做记录的同时,稍做补充

使用lookup

import protobuf from 'protobufjs'
// 找到要翻译的包和字段
const pb = protobuf.lookup('PBserver.hello');

参考文章中在页面中引入protobuf之后,直接使用了lookup,我在实际开发中,会报lookup undefind。不清楚是我的问题还是怎么样
在控制台中打印protobuf发现并没有lookup方法

我在项目中的使用

import protobuf from 'protobufjs'
import behaviorBody from '@/proto/proto.js'
import iconvlite from 'iconv-lite'

var behaviorRoot = protobuf.Root.fromJSON(behaviorBody);
var message = behaviorRoot.lookupType('BehaviorBody');

let dataN = {
    data: [{
        time: Date.now(), // 调用时间戳
        event: 'BURYINGID[event]', // id
    }]
}
var payload = message.create(dataN);
var buffer = message.encode(payload).finish();

buff报错

引入protobufjs就会报错,具体不知道什么原因产生的。

Module "buffer" has been externalized for browser compatibility. Cannot access "buffer.Buffer" in client code.

最后一顿google

解决链接:https://stackoverflow.com/questions/73353392/cannot-access-buffer-buffer-in-client-code-svelte-with-userbase
按照链接中配置了vite.config.js文件就可以了
不太懂为什么会出现这样的报错,和为什么可以这样解决

export default defineConfig({
  resolve: {
    alias: {
      util: 'util/',
    },
  },
})

以上补充不知道会不会遇到,如果有用就点个赞吧~

你可能感兴趣的:(javascript,vue,前端)