结合Node后端和Jumpsuit前端

时间:2017-01-16 05:24:59

标签: node.js reactjs redux frontend backend

我以前使用Node作为后端,React作为前端使用,没有服务器问题。现在我已经在前端更改为jumpsuit我在尝试运行节点服务器时遇到了websocket错误。

更具体地说,当我运行节点服务器时,它在端口上启动,但当我到达localhost:9000时,页面为空,控制台出现此错误:

Jumpsuit WebSocket error

这是我的节点:

Server.js

(function() {
"use strict";

// Express
const express = require('express');
const app = express();
const path = require('path');
const bodyParser = require('body-parser');

// Middleware
app.use(bodyParser.json({limit: '10mb'}));
app.use(bodyParser.urlencoded({limit: '10mb', parameterLimit: 1000, extended: true}));

app.use('/', express.static(path.join(__dirname, '../dist')));
app.get('/search', require('./routes/search.js'));

module.exports = app;

}());

Serve.js

(function() {
'use strict';

// Import 'app' from server.js
var server = require('./server.js')
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({noServer: true});

// Set port as either specified by command line or 9000
server.set('port', (process.argv[2] || 9000));

// Start server
server.listen(server.get('port'), () => {
console.log(`Server started: http://localhost:${server.get('port')}/`);
});
server.on('upgrade', wss.handleUpgrade);
}());

我的 index.html 只不过是简单的:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Welcome to Jumpsuit</title>
  <link rel="stylesheet" href="app.css" charset="utf-8">
</head>
<body>
  <div id="app"></div>
  <script src="app.js"></script>
</body>
</html>

我个人知道他们都在工作。如果我使用index.html和app.js并使用&#39; jumpsuit watch&#39;然后它工作,或者如果我从index.html中删除<script src="app.js"></script>并运行Node然后页面加载所有罚款,所以单独的连身衣和节点部分工作。但我只是想知道如何将它们结合起来。

由于

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方法。我不会将此标记为官方答案,因为它实际上并没有解决问题,只是绕过了它,但希望如果其他人遇到这个问题,他们可以使用这种解决方法,直到实际的解决方案曝光。

Jumpsuit dev表示错误是因为热状态重新加载(HSR)试图打开,尽管我没有告诉它在我的节点设置或任何地方。他说:

  

我很确定只要未设置$(document).ajaxStart(function() { Pace.restart(); }); env变量,HSR   甚至不应该运行:

     

1。确保未设置env变量

     

2。确保您获得最新版Jumpsuit

的最新信息

这是基于hsr.js render中的以下代码行,它检查HSR_WS environmenet变量:

https://github.com/jumpsuit/jumpsuit/blob/ead48fa7da220e3cad82925d94f8136285f413af/src/render.js#L36

我验证了HSR_WS env变量没有设置(它不是),我从Jumpsuit 1.0.0升级到1.1.0并再次测试,然后从1.1.0升级到1.3.2 (最新的非官方发布)并再次测试它,两次它仍然没有工作。

所以最终我只是在那个端口上手动打开了websocket连接并让它在后台的另一个终端上运行,然后运行了Node服务器,它工作正常。

我是如何做的首先全局安装wscat:

HSR_WS

然后在有问题的WS端口上运行它:

npm install -g wscat

最后,我打开了一个新终端并运行了该节点服务器。它已经启动,现在正在运行@ localhost:9000

希望如果其他人有此问题,他们暂时可以使用此解决方法:)