簡體   English   中英

帶有 React 和 Express 的插座 IO。 ReactJS 錯誤:無法代理請求 /socket.io/?EIO=4… 從 localhost:3000 到 http://127.0.0.1:4000

[英]Socket IO with React and Express. ReactJS Error: Could not proxy request /socket.io/?EIO=4… from localhost:3000 to http://127.0.0.1:4000

我正在嘗試在我的 creat-react-app 前端與我的 express 后端之間建立連接。 我將代理設置為我的后端服務所在的端口(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;

前端/封裝.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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM