我以前使用Node作为后端,React作为前端使用,没有服务器问题。现在我已经在前端更改为jumpsuit我在尝试运行节点服务器时遇到了websocket错误。
更具体地说,当我运行节点服务器时,它在端口上启动,但当我到达localhost:9000时,页面为空,控制台出现此错误:
这是我的节点:
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然后页面加载所有罚款,所以单独的连身衣和节点部分工作。但我只是想知道如何将它们结合起来。
由于
答案 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
希望如果其他人有此问题,他们暂时可以使用此解决方法:)