【问题标题】:NodeJS+Express: serving static files for diffrerent URLsNode JS+Express:为不同的 URL 提供静态文件
【发布时间】:2012-09-20 19:09:44
【问题描述】:

我正在使用 node.js+express 来提供静态文件 (CSS+JS)。此时静态目录配置为

app.use(express.static(__dirname + '/static'));

在主模板 layout.jade 中,我将静态文件加载为

link(href='css/bootstrap.css', rel='stylesheet')

在 /hello、/write、/:user 等页面上一切正常。但是当我得到像 /bob/505b6833d3835d3705000001/edit 这样的页面时,找不到静态文件。 Firebug 显示 Node 为静态生成相同的路径,但样式不适用于页面。为什么?提前致谢!

【问题讨论】:

  • 该链接应该只是 /css/bootstrap.css 吗? (注意斜线)
  • 成功了,谢谢。请回复完整答案 - 我会将您的回复标记为最佳,您将能够获得一些声誉积分;)

标签: node.js static routes express


【解决方案1】:

您应该使用带有斜杠的链接。

link(href='/css/bootstrap.css', rel='stylesheet')

这应该解决它。

【讨论】:

  • 但是,我发现我的问题没有解决。我注意到这一行: app.get('/:user/:postid', ensureAuthenticated, function(req, res) {...} 与静态文件路径冲突。我必须尝试将其与主代码分开...
  • 要先运行路由吗?
  • 嗯,“第一”是什么意思?我认为路由在收到请求时开始,并且使用静态 css 呈现页面是节点的最后一个
  • 那么中间件和路由将按照它们添加到 express 应用程序的顺序运行。因此,如果您要做的第一件事是添加静态中间件,那么它将在运行任何路由之前运行。
  • 我试图移动 app.use(express.static(__dirname + '/static/media/content'));到我的 app.js 文件中的每个地方 - 仍然无法让 css 工作((仅当我添加 app.get('/:user/:postid', ensureAuthenticated, function(req, res) {.. .} 函数到我的代码
猜你喜欢
  • 2017-07-12
  • 1970-01-01
  • 2013-12-26
  • 1970-01-01
  • 2018-08-07
  • 1970-01-01
  • 2014-04-19
  • 2013-07-23
  • 1970-01-01
相关资源
最近更新 更多