2017-06-06 54 views
0

我有我的index.html,當我點擊一個按鈕時,它調用一個使用$資源的角度服務。nodejs expressjs發送文件與角度資源

var serviceRest = $resource(URL_API, null, 
    { 
     "connect" : { method: "GET", url: "http://localhost/login"} 
    }); 

然後在我的expressJS路線我有這樣的:

router.get('/',function(req,res){ 
    console.log("Hi there"); 
    res.sendFile('../public/views/login.html', {root: __dirname}); 
}); 

但不起任何作用。什麼也沒有發生,但我的控制檯日誌顯示,所以我的sendFile可能是錯誤的...我留在我的index.html。

| -- Agenda 
    | -- public 
      | -- views 
       | -- login.html 
    | -- controllers 
      | -- routes.js 

我的路由器文件是./controllers,和我的login.html是./public/views

編輯:

好了,所以這個問題是不是一個路徑問題。但是,在我嘗試的所有解決方案中,只有一個給了我一個很好的結果。

res.sendFile(path.join(__dirname, '../public/views/login.html')); 

在那之後,我問自己,「我在Angulr服務是回用$資源,這是在這一刻,我看到了我的connect()功能:

var serviceRest = $resource(URL_API, null, 
{ 
    "connect" : { method: "GET", url: "http://localhost/login"} 
}); 

return { 

    connect: function() { 
     console.log("connect"); 
     console.log(serviceRest.connect()); 
     return serviceRest.connect(); 

    } 
} 

console.log(serviceRest.connect());向我展示了在瀏覽器控制檯中的Promise,這是一個包含我的login.html代碼的巨大數組,其中包含我的login.html代碼哈哈有趣但不幫我哈哈

+0

你配置路由器進程/登錄? –

+0

「流程/登錄」是什麼意思?是的,這是筆記router.get('/'.... 但它真的/登錄,我的console.log(「嗨有」);顯示時,我點擊按鈕,因此它進入router.get – Krakito

+0

如果這是你的問題,我有這是我的server.js:app.use('/登錄',登錄); – Krakito

回答

1

root option是d您想要從中提供文件的irectory。假設你的文件夾結構如下圖所示:

| yourApp 
    | -- public/ 
     | -- views/ 
     |-- login.html 
    | -- controllers/ 
     | -- routes.js 

嘗試用yourApp設置的根目錄

res.sendFile('public/views/login.html', {root: '../<root folder name>'}); 

替換「根文件夾名稱」上面的「公共」父目錄名夾。 考慮到上面的文件夾結構將是:

res.sendFile('public/views/login.html', {root: '../yourApp'}); 
+0

在我的情況下,「yourApp」文件夾名稱爲「Agenda」。 所以我試着對你說:res.sendFile('public/views/login.html',{root:'../Agenda'});它不工作......我也嘗試了一個真正的aboslute路徑,像這樣res.sendFile('C:\\ Users \\ .....');和相同的結果..這res.sendFile讓我生氣 – Krakito

+0

我編輯我的問題,我有更多的細節問題 – Krakito