2017-01-16 46 views
0

我曾經使用節點作爲後端和React作爲前端,並且沒有服務器問題。現在,我已經在前端更改爲jumpsuit,我在嘗試運行節點服務器時遇到了websocket錯誤。組合節點後端和連接服務前端

更具體地講,當我運行的節點服務器啓動的端口上,但是當我到本地主機: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並使用'jumpsuit watch'啓動它,那麼它可以工作,或者如果我從index.html中刪除<script src="app.js"></script>並運行Node,則頁面加載所有的罰款,因此單獨連接和Node零件工作。但我只是想知道我如何結合他們。

謝謝

回答

0

我找到了解決辦法。我不會把這個標記爲官方的答案,因爲它沒有真正解決問題,只是繞過了它,但希望如果別人有這個問題,他們可以使用這種解決方法,直到一個實際的解決方案曝光。

連身衣開發人員說,錯誤是因爲熱狀態重裝(HSR)試圖打開,儘管我沒有告訴它在我的節點設置或任何地方。他這樣說:

I am pretty sure as long as the HSR_WS env variable isn’t set, HSR should not even run:

1. Make sure that env variable isn’t set

2. Make sure you’re up to date on the latest version of Jumpsuit

這是基於關閉此以下的hsr.js代碼行渲染,它檢查HSR_WS environmenet變量:

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

我驗證了HSR_WS環境變量WASN (不是),我從Jumpsuit 1.0.0升級到1.1.0並再次進行了測試,然後從1.1.0升級到1.3.2(最新的非官方發佈版),並再次進行了測試,並且兩次都進行了測試仍然沒有工作。

因此,最終我只是手動打開該端口上的websocket連接,並讓它在後臺的另一個終端中運行,然後運行Node服務器,並且它工作正常。

我是怎麼做的是全球首家安裝wscat:

npm install -g wscat 

然後討論跑了它的WS端口:

wscat -l 43944 

最後,我打開一個新的終端並運行節點服務器在那。它啓動,並正在工作@本地主機:9000

希望如果任何人有這個問題,他們可以暫時使用這種解決方法:)

相關問題