我以前从未遇到过这个问题,也无法弄清楚是什么原因导致的。我正在使用Express和Socket.io作为后端,使用create-react-app作为React前端的项目。
server/index.js...
代码非常标准,据我所知应该可以正常运行...
const app = express();
const server = app.listen(config.port);
io.attach(server);
if (process.env.NODE_ENV === 'production') {
app.use(express.static(path.join(__dirname, '..', 'build')));
app.get('/', (req, res) => res.sendFile(path.join(__dirname, '..', 'build', 'index.html')));
}
io.on('connection', socket => {
*blah blah blah*
});
src/index.js...
class App extends Component {
constructor(props) {
super(props);
this.socket = io.connect(window.location);
}
render = () => {
if (view === 'start') {
return <StartContainer socket={this.socket} />;
} else if (view === 'game') {
return <Game socket={this.socket} />;
}
}
}
我正在测试部署过程,所以我一直在运行set NODE_ENV=production&& node server/index.js
来测试Express应用程序的文件服务。
在开发中,我运行两个服务器:一个是create-react-app,另一个是Express & Socket.io服务器。这个问题在开发中不会出现。
所以,我启动服务器,转到本地主机,但页面一直在刷新。如果我从App
中删除socket连接,则问题消失。希望我没有忽略什么超级简单的东西。感谢任何帮助。
为了简洁起见,我省略了一些App组件,但如果您认为问题可能出在其他地方,请告诉我,我会添加更多内容。
编辑问题明显出现在客户端。我提供了构建的React项目,并遇到了同样的问题。
http://localhost:3001
(Express 服务器所在的端口),而在生产环境中,它是window.location
。在生产环境中独立运行 Express 服务器和 React 服务器会导致 React 服务器正常工作,而 Express 服务器不工作。这是因为从 Express 服务器提供的前端仍然无法工作,而 React 服务器正在连接到 Express 服务器。 - jolaleye