簡體   English   中英

對node.js使用非絕對路徑並表達

[英]Use non-absolute Paths with node.js and express

我在本地主機上運行節點服務器時遇到問題。 現在,它只允許我使用靜態路徑運行它:

  app.get("/", function(req, res){ res.sendFile("/Users/name/Documents/_privat/dungeon/index.html"); }); 

當然那不是我想去的地方。

我嘗試了多種嵌入動態路徑的方法,這是我的文件結構:

 *dungeonapp - main.html - js --client ---main.js (and others) --server ---server.js - style --style.css 

因此,如果我以靜態方式運行所有程序,則我的應用程序可以在localhost上運行,但是它也不會加載我的CSS文件和js文件。

我要去哪里錯了? 所有常規路徑嵌入都無法正常工作,例如“ /../index.html”

快速響應sendFile()方法具有第二個options參數,您可以在其中表達根路徑以進行路徑解析。 請參閱文檔以獲取更多信息。 您可以使用{root: __dirname}作為sendFile()第二個參數,文件路徑將相對於調用sendFile()的javascript文件進行解析。 就您而言,問題中指出的目錄結構是server.js上的代碼為:

app.get("/", function(req, res){
    res.sendFile("../../main.html", {root: __dirname});
});   

這樣,您可以將項目移動到任何文件夾,並且sendFile()將繼續工作。 我認為您應該重新表達您的問題,因為您是在談論絕對路徑而不是靜態路徑。

通常,您會在項目的根目錄中執行兩個子文件夾,一個用於服務器代碼,另一個用於客戶端(即Web)代碼,然后可以在以下目錄中使用app.use(express.static('<filepath>'))您的服務器代碼以提供靜態客戶端文件。

例如,在我的項目根目錄中,我有2個文件夾,一個名為app,一個名為web。 在主app.js中,我有app.use(express.static(__dirname + '/../web/')); 提供靜態內容。 通常,這將是app.use()的首次使用,因此在提供您的內容之前,無需檢查其他路由。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM