【问题标题】:Ejs not rendering css filesEjs不渲染css文件
【发布时间】:2022-01-23 17:31:28
【问题描述】:

我正在使用 Nodejs 开发一个 CRUD 应用程序,但在从我的项目目录渲染外部 css 和 bootstrap5 时遇到问题。当我尝试使用 post Id 传递 get 时,仅呈现 html 块。当我使用cdn时它可以工作。 . app.get('edit'){..} 有效,但是当 app.get('/edit/:id'){..} 不渲染样式时

// this one works, rendering html and styling 

// admin fetch all posts
  app.get('/admin', (req,res) => {

    con.query(
        'SELECT * FROM post',
        (error, results) => {
            res.render('./admin/adminland', {post: results, layout:'./layout/dashboard'});
            
        }
    );

  }) ;
  
  // It still loads the page but it deosnot render the css.
  
  
  // edit post
  app.get('/edit/:id', (req,res) => {
    
    con.query(
        'SELECT * FROM post WHERE postid = ?',
        [req.params.id],
        (error, results) => {
            res.render('admin/post/editpost', {post: results[0], verified: req.session.loggedin});
        }
    );

    
  }) ;
  

【问题讨论】:

  • 你能检查你的浏览器开发工具并检查正在加载的样式表的誓言吗?由于您的路径具有不同的深度,我怀疑这可能是路径问题。
  • 我假设您的 CSS 位于单独的文件中,并且您尝试通过它们自己的 URL 访问它们。因此,您需要某种方式告诉 Express 为它们提供服务,因为它默认不提供任何文件。你没有显示任何代码。我不知道这是否意味着您没有任何代码来提供您的 CSS 文件(通常使用 express.static())或者您有,但它无法正常工作并且需要修复。是哪一个?
  • @Terry 我已经检查过了,路径没有问题。问题是当我导入本地样式表时,我不明白 app.get('/edit/:id', ..} 对呈现页面有何影响。
  • @jfriend00 我已经使用了 express.static() .. 它适用于其他页面。问题是当我在 editpost 页面上使用内联样式或从 CDN 时,它工作正常,但是当 edit/:id 传递时,样式不起作用。如果 :id 部分被删除,它会再次起作用。

标签: css node.js ejs


【解决方案1】:

我使用了express.static() .. 它适用于其他页面。问题是当我在 editpost 页面上使用内联样式或从 CDN 时,它工作正常,但是当 edit/:id 传递时,样式不起作用。如果 :id 部分被删除,它会再次起作用。

这听起来很可能是因为您在页面中使用了错误的 URL 来引用样式表。我的猜测是您没有以 / 开头的 URL,因此它被视为相对 URL,因此一旦您将其放在不是顶级路径的页面中,它就会停止工作,因为浏览器添加了页面的 URL 开头的路径,这是错误的 URL。

/ 添加到网页样式表 URL 的开头,这样浏览器就不会在请求 URL 之前将页面路径添加到 URL 的开头。

此外,如果您查看浏览器控制台,它可能会向您显示它尝试获取的实际 URL 并获得 404。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 2018-12-26
    • 1970-01-01
    • 2018-12-23
    相关资源
    最近更新 更多