sockjs-node/info報錯
sockjs-node作用
SockJS is a JavaScript library (for browsers) that provides a WebSocket-like object. SockJS gives you a coherent, cross-browser, Javascript API which creates a low latency, full duplex, cross-domain communication channel between the browser and the web server, with WebSockets or without. This necessitates the use of a server, which this is one version of, for Node.js.
SockJS提供跨瀏覽器JavaScript的API,創(chuàng)建了一個低延遲、全雙工的瀏覽器和web服務器之間通信通道。可以理解為我們代碼改了頁面及時熱更新了
請的格式
http://localhost:[端口]/sockjs-node/info?t=1641276400161
http://IP:[端口]/sockjs-node/info?t=1641276400161
原因
網絡環(huán)境變更導致,例如無線網絡變化、開發(fā)IP變了,這種情況60%,重啟項目(npm run dev 或者 npm run serve)就能解決,還有就是端口變了,但是項目中把端口配置死了,這種對應調整就好了。還有一種是比較特殊的是域名與IP映射的問題可能出現(xiàn)在正式環(huán)境或者為了cookie一致(chrome94+)使用域名開發(fā)。
解決方案
1、網上最多的版本【不推薦】
1. 找到/node_modules/sockjs-client/dist/sockjs.js
2.找到代碼的 1605行
try {
// self.xhr.send(payload); 把這里注掉
} catch (e) {
self.emit('finish', 0, '');
self._cleanup(false);
}
問題是解決了,但是熱更新也廢了
2、配置sockHost 代理,如果IP或者域名是固定的 【同3類似:缺點是要固定死】
module.exports = {
devServer: {
sockHost: 'localhost:8080', // localhost[端口]、IP[端口]、域名
disableHostCheck: true
}
}
3、配置代理 端口,如果IP或者域名是固定的【同2類似:缺點是要固定死】
module.exports = {
devServer: {
port: '8080', // 端口
disableHostCheck: true
}
}
4、域名方式設置端口
我們發(fā)現(xiàn)域名這種出現(xiàn)問題的大都是請求loaclhost 少了端口號
使用代理加上端口,或者開發(fā)的時候自己加上端口
代理配置fiddler、Charles都差不多
請求的時候 域名+端口
5、設置為開發(fā)環(huán)境,不推薦
/package-lock.json
關閉開發(fā)環(huán)境時的 sockjs 接口
dev 設置為false
6、 重啟項目或者服務器 【60%以上能解決:推薦】
重啟大概率能解決問題,如果是域名映射開發(fā)方式推薦4,如果項目開發(fā)端口、IP比較固定也可以使用2、3。