2015-05-19 66 views
0

我有一個簡單的疑問,但無法弄清楚。我開始節點js應用程序,從本地主機位置,並通過我發送HTML文件的響應。但是它的節點加載了html內部的腳本文件。無法獲取腳本文件節點js

節點js文件

var express = require('express'); 
var app = express(); 
var ExpressPeerServer = require('peer').ExpressPeerServer; 

app.get('/', function(req, res, next) { 
    console.log("before redirection"); 
    res.sendfile('index.html'); }); 

var server = app.listen(9000); 

var options = { 
    debug: true 
} 

app.use('/api', ExpressPeerServer(server, options)); 

server.on('connection', function(id) { 
    console.log("In Server connection") 
}); 

server.on('disconnect', function(id) { 
    console.log("server Disconnected") 
}); 

HTML文件

<html> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 
     <script src="http://cdn.peerjs.com/0.3/peer.js"></script> 
     <script type = "text/javascript" src="script.js"></script> 
    </head> 
    <body> 
     <h1>ha ha this is Webrtc</h1> 
    </body> 
</html> 

的script.js

function webRtcInit() { 
      alert("Inside Script") 
    } 
    $(document).on('ready', webRtcInit()); 

當我正常運行HTML文件它的加載腳本文件。但是當我通過節點js發送文件並加載腳本時,我收到錯誤,它無法獲取腳本文件,爲什麼發生這種情況......?

感謝

+1

是完全相同的目錄中的兩個文件?似乎它可能是一個路徑問題 –

+0

哪個版本的表達式使用?希望它是4.x –

+0

@AbhishekPachal:Ya其4.12版本是否有任何問題..? – Krishna

回答

2

我看到一些問題,在您的代碼:

這使你的HTML頁面,同樣的,你需要一個script.js

app.get('/', function(req, res, next) { 
    console.log("before redirection"); 
    res.sendfile('index.html'); 
}); 

無論是具體:

app.get('/script.js', function(req, res, next) { 
    console.log("before redirection"); 
    res.sendfile('index.html'); 
}); 

或通用:

app.use(express.static('static')); // now place your static files in the static folder. 

無關手頭的問題,但是,在script.js,它是webRtcInitwebRtcInit()

$(document).on('ready', webRtcInit); 
1

使Node.js服務器默認不提供任何文件(這是不同的,一些其他Web服務器)。所以,你想要它提供的任何文件都必須有一個路徑或者一些處理它的中間件。

因此,您的代碼確實有一個/的路由,但是當瀏覽器解析您從該路由返回的index.html文件,然後嘗試從您的node.js服務器加載script.js時,您沒有路由和服務器將返回404(未找到)。

解決方案是爲script.js創建路由。由於它是一個靜態資源,因此可以使用express.static功能來爲所有靜態文件提供服務。你可以閱讀關於在特快here服務靜態文件。