css - 使用 Node.js 和 Express 时,路由参数导致 CSS 无法加载

标签 css node.js express

我正在使用 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 的方式存在一些问题,但我无法弄清楚它如何在我的所有路线上正常工作其他路由,并且每当使用路由参数时都会失败。我也尝试过实际使用路由参数,例如

app.get("/Test2/:route", function(req, res){
const routeParam = req.params.route;
res.render("Test2.ejs", {
    routeParam: routeParam
});

});`

我还在页面中显示了routeParam,以确保其正常工作,而且确实如此,只是页面仍然获取页面的 HTML 来代替正确的 CSS 文件,导致其格式不佳。

如果有任何帮助,我将不胜感激,谢谢

最佳答案

感谢您研究这个 CoderFF,您帮助我弄清楚了如何让它工作。看起来问题是我的 css 文件直接位于 public 文件夹内,而不是位于其中的子目录中。 html 必须是这样的:

<link rel="stylesheet" type="text/css" href="/css/customStyle.css" />

它必须在 href 标签中包含前导“/”。我不知道以前在没有路由参数的路由上没有它是如何工作的,但确实如此。这似乎同样适用于公共(public)文件夹中/images/文件夹中的图像。

关于css - 使用 Node.js 和 Express 时,路由参数导致 CSS 无法加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64884732/

相关文章:

javascript - JQuery - 每次点击表格都会改变单元格宽度

javascript - 如何修复 "TypeError: app.use() requires a middleware function"?

node.js - 为什么 typeorm 需要 "reflect metadata"

node.js - 在 NodeJS 项目中使用 TypeScript 中的路径

javascript - 在express.js中处理post请求

css - 如何使 max-width 属性对 php 调用/动态 css 具有鲁棒性

html - CSS z-index 似乎没有响应

python - lxml 中 cssselect 的 XHTML 命名空间问题

javascript - 访问客户端 js 文件中的 handlebars 变量

node.js - React Fetch() 我的本地 Node Express 后端;无法返回后端测试值