簡體   English   中英

Node.js應用程序沒有提供沒有根路徑的靜態網頁

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

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