如何解决带有 React 和 Express 的套接字 IO ReactJS 错误:无法代理请求 /socket.io/?EIO=4..... 从 localhost:3000 到 http://127.0.0.1:4000
我正在尝试在我的 creat-react-app 前端和我的快速后端之间建立连接。我将代理设置为后端服务的端口 (4000)。当我运行应用程序时,前端出现代理错误:
Proxy error: Could not proxy request /socket.io/?EIO=4&transport=polling&t=NRRFdVj&sid=CJzhACsXdlxmP4araAAQ from localhost:3000 to http://127.0.0.1:4000.
See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ECONNRESET).
这是我的代码:
后端/index.js
const app = require('express')();
const http = require('http');
const server = http.createServer(app);
const io = require('socket.io')(server);
io.on('connection',(socket) => {
console.log('New WS connection....');
});
server.listen(4000,() => console.log('Server running on port 4000'));
前端/App.js
import React from 'react';
import socketClient from 'socket.io-client';
const App = () => {
const socket = socketClient();
return <div>hello</div>;
};
export default App;
前端/package.json
{
"name": "frontend","proxy": "http://127.0.0.1:4000/","version": "0.1.0","private": true,"dependencies": {
"@testing-library/jest-dom": "^5.11.8","@testing-library/react": "^11.2.2","@testing-library/user-event": "^12.6.0","react": "^17.0.1","react-dom": "^17.0.1","react-scripts": "4.0.1","socket.io-client": "^3.0.5","web-vitals": "^0.2.4"
},"scripts": {
"start": "react-scripts start","build": "react-scripts build","test": "react-scripts test","eject": "react-scripts eject"
},"eslintConfig": {
"extends": [
"react-app","react-app/jest"
]
},"browserslist": {
"production": [
">0.2%","not dead","not op_mini all"
],"development": [
"last 1 chrome version","last 1 firefox version","last 1 safari version"
]
}
}
当我从后端获取数据时,代理工作正常,但在这种情况下使用它时会发生代理错误...
解决方法
试试下面的代码。您没有在 socketClient([URL][,options]); 上添加 URL 参数;
import React from 'react';
import socketClient from 'socket.io-client';
const App = () => {
const socket = socketClient("http://localhost:4000");
return <div>hello</div>;
};
export default App;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。