使用--inspect-brk=localhost:3000时出现WebSockets request was expected错误求助
解决「WebSockets request was expected」调试错误
嘿,这个问题我之前踩过坑,核心原因其实很简单——端口冲突!
问题根源
--inspect-brk是Node.js的调试标志,它会在你指定的端口(这里你填了3000)上建立一个调试用的WebSocket服务,等着调试工具(比如Chrome DevTools)来连接。但你的服务器程序本身默认也是监听3000端口处理HTTP请求,这就导致两个服务抢同一个端口了:
- 当调试器在3000端口等着WebSocket连接时,你去访问API发的是HTTP请求,调试器识别不了,就抛出了「WebSockets request was expected」错误。
- 反过来,如果服务器先占了3000端口,调试器启动时会直接报错“端口被占用”,不过看起来你的情况是调试器先启动了,所以出现WebSocket相关的错误。
快速解决方案
给调试器和服务器分配不同的端口就行,两种方法任选:
方法1:修改调试器端口
把调试端口换成Node.js默认的调试端口9229(或者其他未被占用的端口),命令改成:
nodemon --inspect-brk=localhost:9229 dist/server/app.js
这样服务器继续用3000,调试器用9229,互不干扰。之后你可以通过Chrome浏览器访问chrome://inspect来连接调试器。
方法2:修改服务器监听端口
如果你一定要用3000作为调试端口,那就在你的服务器代码里把监听端口改成其他值,比如3001:
// 假设你的服务器启动代码是这样的 app.listen(3001, () => { console.log('Server running on port 3001'); });
之后运行调试命令时,服务器会在3001端口处理API请求,调试器在3000端口等待调试连接。
额外检查项
如果上面的方法没解决,你可以检查一下:
- 有没有其他程序占用了3000或你指定的调试端口,可以用
lsof -i :3000(Mac/Linux)或netstat -ano | findstr :3000(Windows)查看端口占用情况。 - 你的nodemon配置文件(比如
nodemon.json)里有没有设置额外的端口参数,导致端口冲突。
内容的提问来源于stack exchange,提问作者ycshao
相关产品推荐
相关产品推荐

