使用Playwright连接WebSocket时遇ReferenceError错误求助
WebSocket连接报错:ReferenceError: WebSocket is not defined
错误原因
测试代码里直接使用了WebSocket.OPEN,但当前运行环境是Node.js(比如Jest测试环境),不存在浏览器全局的WebSocket对象。你的连接逻辑里用的是ws包提供的WebSocket实现,但测试代码没有导入这个模块,导致引用未定义。
解决方案
在测试代码中导入ws包的WebSocket,替换掉全局的WebSocket引用:
修改后的测试代码
import { WebSocket } from 'ws'; // 新增导入语句 test(`connection`, async () => { const url = endpoint.webSocketURL; const authToken = authorizationValue; try { const websocket = await connectToWebSocket(url, authToken); expect(websocket.readyState, "Verify Trade Streaming connection").toBe(WebSocket.OPEN); websocket.onmessage = (event) => { const data = event.data; console.log('Received message: ', data); }; } catch (error) { console.error("WebSocket connection failed: ", error); } });
额外说明
- 确保项目已安装
ws依赖:执行npm install ws --save(生产环境)或npm install ws --save-dev(仅测试环境) - 你的
connectToWebSocket函数逻辑本身无问题,错误仅出现在测试代码的全局WebSocket引用上
内容的提问来源于stack exchange,提问作者sameera senarath
相关产品推荐
相关产品推荐

