我正在使用Node.js、Express和EJS模板引擎構建一個簡單的網站,但我無法將外部CSS文件加載到具有路線參數的路線上。我的代碼如下所示:
const express = require("express");
const app = express();
var AWS = require('aws-sdk');
var uuid = require('uuid');
var request = require('request');
var Amplify = require('aws-amplify');
const { info } = require("console");
app.use(express.static("public"));
app.set("view engine", "ejs");
app.get("/Test1/", function(req, res){
res.render("Test1.ejs");
});
app.get("/Test2/:route", function(req, res){
res.render("Test2.ejs")
});
Test1.ejs和Test2.ejs是彼此的精確副本,一個是從另一個復制粘貼的。
我能夠看到CSS文件在Test1上正確加載,但是在Test2 express上發送的是Test2.ejs的HTML,而不是實際的CSS文件。這是沒有重新加載或改變任何東西。如果CSS沒有在我的任何一條路線上正確加載,我不會感到困惑,因為這表明我在使用express時出現了一些問題,但我不知道它如何能在我的所有其他路線上正常工作,并在使用route參數時失敗。我還嘗試實際使用路由參數,例如
app.get("/Test2/:route", function(req, res){
const routeParam = req.params.route;
res.render("Test2.ejs", {
routeParam: routeParam
});
});`
我還在頁面中顯示了routeParam,以確保它能正常工作,而且它確實能正常工作,只是頁面仍在獲取頁面的HTML,而不是正確的CSS文件,導致它的格式不正確。
我很感激在這方面的任何幫助,謝謝
感謝您研究這個CoderFF,您幫助我找到了如何讓它工作的方法。看起來問題是我的css文件直接在公共文件夾中,而不是在它的子目錄中。html必須是這樣的:
<link rel="stylesheet" type="text/css" href="/css/customStyle.css" />
它必須在href標記中包含前導“/”。我不知道以前在沒有路線參數的路線上它是如何工作的,但它確實是這樣。這似乎同樣適用于公共文件夾中的/images/文件夾中的圖像。
我真的不能復制這個。我正在做的是:
將我的CSS放在public/css/all.css中。文件只包含一行:html {background-color: #aaaaaa}這樣我就可以知道它已經加載了 將兩個模板放在views/Test1.ejs和views/Test2.ejs中,并在其中放入相同的內容:& lthtml & gt& lthead & gt& ltlink rel = & quot樣式表& quottype = & quottext/CSS & quot;href = & quot/CSS/all . CSS & quot;/& gt;& lt/head & gt;& ltbody & gt& lt/body & gt;& lt/html & gt; 而且效果非常好。
我假設您已經在public/ folder中創建了一個文件夾Test2,您在其中放置了CSS。在這種情況下,您到css的路徑是/Test2/some.css匹配您的第二個路由,而不是獲得一個CSS文件,您從該路由獲得一個HTML。
在這種情況下,移動CSS文件會有所幫助。