[英]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.