【问题标题】:express can't serve static file for child ejs fileexpress 无法为子 ejs 文件提供静态文件
【发布时间】:2013-06-06 22:13:44
【问题描述】:

express版本是3.2.5,ejs版本是0.8.4

我要服务stylesheets/style.css

我在app.js这样做

  app.use(express.static(path.join(__dirname, 'public')));
  app.use(app.router);

  // render article.ejs
  app.get('/u/:name/:day/:title', function(req,res){
    Post.getOne(req.params.name, req.params.day, req.params.title, function(err, post){
      if(err){
        req.flash('error',err);
        return res.redirect('/');
      }
      res.render('article',{
        title: req.params.title,
        post: post,
        user: req.session.user,
        success: req.flash('success').toString(),
        error: req.flash('error').toString()
      });
    });
  });

我的结构是header.ejs

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Blog</title>
<link rel="stylesheet" href="stylesheets/style.css">
</head>
<body>

article.ejs内容是

<%- include header %>
<p class="info">
  author:<a href="/u/<%= post.name %>"><%= post.name %></a> | 
  date:<%= post.time.minute %>
 </p>
 <p><%- post.post %></p>
<%- include comment %>
<%- include footer %>

当我访问http://localhost:3000/时

GET /stylesheets/style.css 304 9ms 

同时访问localhost:3000/u/username/date/postname

GET /u/username/date/stylesheets/style.css 404 10ms

为什么会显示这个/u/username/date/stylesheets/style.css 目录

有什么想法吗?

【问题讨论】:

    标签: express ejs


    【解决方案1】:

    您的样式表路径不能以 / 开头。因此,它正在加载相对于请求它的任何 HTML 文件的“stylesheets/style.css”。

    【讨论】:

    • 我试过你说的&lt;link rel="stylesheet" href="./stylesheets/style.css"&gt;它仍然加载相对路径
    • 那是因为 ./ 是相对路径。做 /stylesheets/style.css。那是绝对路径
    猜你喜欢
    • 2019-01-19
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    相关资源
    最近更新 更多