ejs:为什么它停止渲染 CSS?

ejs : why it's stop to render CSS?

我对 EJS 有误解,当我发出 post 请求时,EJS 正确呈现我的 CSS,但是当我这样做时:

exports.resetpassword = async (req, res) => {
  const {id, token} = req.params;
  
  
  const user = await LoginModel.findById(id).exec();
  const secret = process.env.TOKEN_SECRET + user.password
  
  try {
    const payload = jwt.verify(token, secret)
    req.flash('emailReseter', `${user.email}`);
    res.render("resetpassword.ejs", {messageMail: req.flash("emailReseter")});
  } catch (error) {
    console.log(error.message);
  }
  
};

这是我看到的:

我无法使用我的 css 文件,我不知道问题出在哪里。

我的其他 EJS 文件是相同的,除了头部 link 和我的 css 工作正常。

到目前为止我唯一的方法

我在我的路线中添加:

const router = require("express").Router();
const services = require('../service/render');

router.get("/", services.login);
router.get('/forgot-password', services.forgotpassword);
router.get('/reset-password/:id/:token', services.resetpassword);
router.get('/reset-password', services.resetpasswordredirect)

在我的 render.js

exports.resetpassword = async (req, res) => {
  const {id, token} = req.params;
  
  
  const user = await LoginModel.findById(id).exec();
  const secret = process.env.TOKEN_SECRET + user.password
  
  try {
    const payload = jwt.verify(token, secret)
    req.flash('emailReseter', `${user.email}`);
    res.redirect('/reset-password')
  } catch (error) {
    console.log(error.message);
  }
  
};

exports.resetpasswordredirect = async (req,res)=>{
  res.render("resetpassword.ejs", {messageMail: req.flash("emailReseter")});
  
}

我以前的解决方案不好,因为如果我在参数中有一个 ID,那么我的 css 就不起作用。

所以我改变了我的server.js

app.use(express.static("public"));

至:

app.use('/public', express.static("public"));

还更改了我所有的 ejs 文件,例如:

<link rel="stylesheet" href="css/login.css">

变成了:

<link rel="stylesheet" href="/public/css/login.css">