You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Vite搭建Vue3项目引入roslibjs报错,同代码在VueCLI运行正常

问题根因

roslib 底层依赖了 Buffer、events、util 等 Node.js 核心模块,基于 Webpack 实现的 Vue CLI 会默认对这些 Node 模块做浏览器端 polyfill,所以可以正常运行。而 Vite 默认不提供 Node 核心模块的浏览器兼容处理,所以引入后会触发模块找不到、全局变量未定义等报错。

解决步骤

  1. 安装所需依赖
npm install --save-dev @rollup/plugin-inject buffer events util process
  1. 修改项目根目录下的 vite.config.js 配置,注入全局变量并配置模块别名
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import inject from '@rollup/plugin-inject'

export default defineConfig({
  plugins: [
    vue(),
    // 注入全局变量
    inject({
      Buffer: ['buffer', 'Buffer'],
      process: 'process/browser'
    })
  ],
  resolve: {
    alias: {
      // 配置Node核心模块的浏览器实现别名
      events: 'events',
      util: 'util',
      buffer: 'buffer',
    }
  }
})
  1. 修正代码里的 WebSocket 地址格式
    roslib 初始化的url参数需要携带 WebSocket 协议前缀,你当前的地址缺少ws://前缀,会导致连接失败,修改对应代码:
// 原代码 let ws_address = '127.0.0.1:9090'
let ws_address = 'ws://127.0.0.1:9090'

如果修改后仍报Buffer is not defined错误,可以在项目入口index.html的<head>标签中添加全局声明:

<script type="module">
  import { Buffer } from 'buffer'
  window.Buffer = Buffer
</script>

完成以上修改后重新启动项目即可正常运行。

内容的提问来源于stack exchange,提问作者Desstiony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:24:03