2016-05-15 60 views
1

我正在讀這個Node.js在行動,這是index.html其中node_modules文件夾(我相信)socket.io.js腳本標記如何解析node_modules的路徑?

node_modules文件夾位於index.html所在的目錄之上時,以下腳本標記如何解析到socket.io.js的路徑?

腳本標籤:

<script src="/socket.io/socket.io.js" type="text/javascript"></script> 
+0

可能重複的[無法找到socket.io.js](http://stackoverflow.com/questions/8689877/cant-find-socket-io-js) – JordanHendrix

+0

感謝JordanHendrix,但在我的情況下,有沒有錯誤說文件找不到。從我的最後,一切正常,但我想了解腳本標記如何在node_modules/socket.io目錄中找到socket.io.js,而不是在腳本標記中明確指定它。提前感謝! – Samot

回答

0
  • Socket.io讀取socket.io-client/socket.io.js文件的內容到一個變量。

  • Socket.io可以訪問應用程序的http服務器,然後它會偵聽匹配類似'/socket.io/socket.io.js'的URL的請求並響應上面該變量的內容

可以在socket.io source code看到:

+0

謝謝Saeed,你還在說'/socket.io/socket.io.js'與socket.io.js真正駐留的實際目錄(即node_modules/socket.io/lib/socket.io。 JS)?非常感謝! – Samot

+1

@Samot,沒有物理文件路徑和URL不需要匹配。物理文件來自socket.io包依賴的另一個名爲socket.io-client的npm包。 所以該文件位於'node_modules/socket.io-client/socket.io.js' –

+0

好的謝謝賽義德。那麼,說'/socket.io/socket.io.js'是指'node_modules/socket.io/lib/socket.io.js'是安全和正確的嗎?在此先感謝 – Samot

0

當您在文件中包含模塊時,節點首先會在當前目錄中的node_modules文件夾中查找該模塊。如果它沒有在那裏找到它,那麼它會移動到父目錄並尋找該目錄中存在的node_modules中的模塊,並且它會一直向上移動,直到找到所需的模塊。