這讓我發瘋......雖然我有Express + Socket.io的工作版本,但似乎無法用out-of-機箱NPM安裝在新的項目文件夾中。任何人都可以指出我錯過了什麼......?這裏是我的過程:Express + socket.io:socket.io客戶端腳本是404
我在項目目錄(pwd
)創建node_modules
文件夾,然後執行:
npm install express
npm install socket.io
運行這兩個命令如預期把包在我的項目的node_modules
文件夾中。現在,我建立了我與下列服務器:
var express = require('express'),
server = express.createServer().use(express.static(__dirname+'./public')).listen(8080),
io = require('socket.io').listen(server);
我public
文件夾包含靜態資產爲我的申請。我的公共指數HTML頁面包括腳本標籤:
<script src="/socket.io/socket.io.js"></script>
最後,我跑我的服務器腳本並轉到在Web瀏覽器中的應用。我的靜態公共文件都得到了正確的服務,但是我得到了404的/socket.io/socket.io.js
。現在,我可以交換來自另一箇舊項目的express
包,並使整個系統都能正常工作。不知何故,包實例配置不同,但我不知道如何重現。 Express網站提到了安裝依賴關係的一些問題,雖然運行npm install -d
似乎沒有幫助(是否有一個特定的pwd
,我需要在運行npm install -d
?)。我想我在使用NPM進行安裝之後必須丟失一些有關配置新Express實例的重要信息。
感謝您的任何見解!
express和socket.io的安裝版本是什麼?我剛剛完成了你所做的步驟,靜態資產和socket.io.js都很好。 –
客戶端socket.io.js是動態生成的,它不應該與你的快速靜態服務器有關。 我可以獲得有關失敗路線的更多信息嗎? 檢查如果您轉到http:// localhost:8000/socket.io/socket.io.js或http:// localhost:8000/socket.io /(使用您正在運行的端口號替換8000你的應用程序) – Sdedelbrock
同上蒂莫西說什麼...它適用於我的機器。雖然在Windows中,我不得不將路徑更改爲靜態文件,如下所示:__dirname +'/ public'(刪除了點) –