You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Express中CSS无法关联EJS文件的问题求助

解决EJS无法加载CSS静态资源的问题

我来帮你搞定这个问题——你的CSS在EJS里加载失败,核心原因是资源引用路径写错了,结合你已经配置了express.static的情况,咱们一步步来修复:

1. 修正EJS文件里的静态资源路径

你已经通过app.use(express.static(path.join(__dirname, 'public')));public文件夹设置成了静态资源的根目录,这意味着所有静态资源的请求都会从public文件夹开始查找,所以路径里不需要加../public或者/public前缀:

修改前的错误路径:

<link rel="stylesheet" href="../public/stylesheets/login.css" type="text/css">
<script type="text/javascript" src="/public/javascripts/login.js"></script>

修改后的正确路径:

<link rel="stylesheet" href="/stylesheets/login.css" type="text/css">
<script type="text/javascript" src="/javascripts/login.js"></script>

2. 修复404中间件的逻辑(潜在坑点)

你当前的404处理代码里嵌套了app.use('/', ...),这会导致每次触发404时都重复注册根路由,很容易引发后续的路由冲突问题,建议改成标准的404处理方式:

修改前的代码:

app.use(function(req, res, next) { 
  var err = new Error('Not Found'); 
  err.status = 404; 
  app.use('/', function(req, res) { 
    res.sendFile(path.join(__dirname + '/web.html')); 
  }); 
  next(err); 
}); 

修改后的代码:

app.use(function(req, res, next) { 
  var err = new Error('Not Found'); 
  err.status = 404;
  // 直接返回404页面,避免重复注册路由
  res.sendFile(path.join(__dirname, 'web.html'), function(sendErr) {
    if (sendErr) next(err);
  });
}); 

3. 优化CSS里的背景图路径(可选但推荐)

你的CSS里背景图用的是相对路径../images/bg-06.jpeg,虽然当前层级是对的(指向public/images/bg-06.jpeg),但改成绝对路径会更稳妥,避免后续文件夹结构变化导致路径失效:

修改前:

body { 
  background-image: url("../images/bg-06.jpeg"); 
  /* 其他样式... */
}

修改后:

body { 
  background-image: url("/images/bg-06.jpeg"); 
  /* 其他样式... */
}

做完以上修改后,重启你的Express服务,EJS页面应该就能正常加载CSS和JS资源了。

内容的提问来源于stack exchange,提问作者StackOverLow

火山引擎 最新活动