[英]Node.js application not serving static webpage without root path
我在node.js中編寫一個簡單的應用程序,由於某種原因,我在嘗試提供我的html頁面時收到錯誤“ TypeError:path必須是絕對的或指定root到res.sendFile ”。 不應該發生此錯誤,因為我使用了一個快速中間件來指定可以找到此文件的文件夾。 那么為什么我會遇到這個問題呢?
我的app結構看起來像這樣
MyApp
public
login.html
app.js
我的html頁面正在這樣的app.js中提供
var express = require("express");
var app = express();
app.use(express.static("public"));
app.get('/', function(req, res){
res.sendFile("login.html");
});
app.listen(3000);
我知道要繞過這個,我可以做“res.sendFile(__ dirname +'/ public / login.html');” 相反,但我不應該,因為我使用的是中間件。 有任何想法嗎?
添加給你全路徑的函數,讓我們調用這個函數$
var $=(file)=>`${__dirname}/public/${file}`;
然后 :
res.sendFile($("login.html"));
這樣,您不需要為每個sendFile
調用手動包含根路徑。
這條線
app.use(express.static("public"));
不做你認為它做的!
它並沒有為每一個節點功能的默認文件夾,其實它並沒有做其他節點的功能什么。
它只是說如果網絡服務器收到請求,首先查看該文件夾以查看是否存在這樣的文件,如果存在,則提供該文件。
因此,它是靜態文件的路徑,通常用於CSS和JavaScript文件,當然還有任何其他不提供動態內容的靜態文件。
但是,這一行
res.sendFile("login.html");
在當前工作目錄中查找文件login.html
,或者換句話說,在運行Node腳本的地方,它與靜態路由沒有任何關系,實際上是獲取該文件的正確方法您的腳本運行的位置正是要做的
res.sendFile(__dirname + '/public/login.html');
因為這是正確的路徑,這是sendFile
查找文件所必需的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.