vue解决sockjs报错

打开node_modules -》  sockjs_client -》 dist -》 sockjs.js 

找到1606行左右,将self.xhr.send(payload);注释掉

一般开发的时候不要注释掉,打包的时候再注释,因为注释掉以后就不能热加载了 

Vue 项目中使用 `@stomp/stompjs` 连接 WebSocket 服务时,如果遇到 **“找不到 net 模块”** 的错误,通常是因为 `stompjs` 的某些版本依赖 Node.js 的内置模块(如 `net`、`tls` 等),而这些模块在浏览器环境中是不可用的。 `@stomp/stompjs` 的较新版本(如 v6+)已经提供了 **浏览器友好的 WebSocket 适配器**,不再默认依赖 Node.js 的模块。如果仍然报错,可能是项目构建工具(如 Webpack 或 Vite)错误地引入了 Node.js 版本的依赖。 ### 解决方案 1. **使用 `SockJS` 或浏览器原生 WebSocket 适配器** 在初始化 STOMP 客户端时,明确指定使用浏览器支持的 WebSocket 实现: ```javascript import { Client } from '@stomp/stompjs'; import { SockJSClient } from '@stomp/stompjs/lib/sockjs-client'; const client = new Client({ brokerURL: 'ws://your-websocket-url', webSocketFactory: () => new SockJSClient('http://your-websocket-url'), // 或者使用原生 WebSocket // webSocketFactory: () => new WebSocket('ws://your-websocket-url'), debug: (str) => { console.log(str); }, reconnectDelay: 5000, }); client.activate(); ``` 2. **确保使用正确的版本** 确保安装的是适用于浏览器的版本,避免引入 Node.js 环境的模块: ```bash npm install @stomp/stompjs sockjs-client ``` 3. **配置构建工具排除 Node.js 模块** 如果使用的是 Webpack,可以在 `webpack.config.js` 中添加如下配置,防止构建工具尝试引入 Node.js 模块: ```js module.exports = { // ... resolve: { fallback: { net: false, tls: false, fs: false, }, }, }; ``` 如果使用的是 Vite,Vite 默认不支持 Node.js 模块,因此应确保依赖不引入这些模块。 4. **检查构建目标环境** 确保没有在服务端(如 SSR)环境中使用 `stompjs`,否则可能需要额外的适配或环境判断逻辑。 ### 示例代码 ```javascript import { Client } from '@stomp/stompjs'; const client = new Client({ brokerURL: 'ws://localhost:8080/ws', webSocketFactory: () => new WebSocket('ws://localhost:8080/ws'), debug: (msg) => console.log(msg), onConnect: () => { console.log('Connected to WebSocket'); client.subscribe('/topic/messages', (message) => { console.log('Received message:', message.body); }); }, onStompError: (frame) => { console.error('Broker reported error: ' + frame.headers['message']); console.error('Additional details: ' + frame.body); }, }); client.activate(); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值