【问题标题】:node server is not serving static files节点服务器不提供静态文件
【发布时间】:2017-11-21 08:32:14
【问题描述】:

我使用 express 框架创建了一个 nodejs 应用程序。我使用express.static 来提供我的静态文件。

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

有一个路由服务于 login.html

// serve login page
app.get('/auth/login', loginPage);

loginPage函数

loginPage(req: any, res: any) {
   res.sendFile(path.join(__dirname, '..', '..', 'public', 'login.html'));
}

现在,如果我直接点击 http://localhost:8080/login.html 登录页面会得到所有的 css 和 js 文件,所以会得到静态文件。

但是当我点击 http://localhost:8080/auth/login 时,只提供 login.html 并且其他 css/js 文件显示 404 状态。

如果我检查浏览器网络窗口请求的请求是针对 http://localhost:8080/auth/css/bootstrap.min.css,则这是附加 auth 前缀。

但是当我将 URL 映射从 /auth/login 更改为 /auth 时,它可以正常工作。

我该如何解决这个问题?

【问题讨论】:

  • 问题很可能不在 Express 后端,而在于您从 login.html 中的 HTML 代码引用 CSS 文件的方式。请包含链接到样式表的代码。
  • 我使用了相对网址。 <link href="css/bootstrap.min.css" rel="stylesheet">
  • 好吧,你去吧,如果你使用相对 URL,它总是相对于当前页面的路径。试试href="/css/bootstrap.min.css"(以斜线开头)

标签: node.js express


【解决方案1】:

我在链接其他 js 和 CSS 文件时没有在 href 属性中使用 /。像这样

<link href="css/bootstrap.min.css" rel="stylesheet">

所以我通过附加/ 更改了所有href

<link href="/css/bootstrap.min.css" rel="stylesheet">

现在这正在工作。感谢@Patric

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-10
    • 2020-02-21
    • 1970-01-01
    • 2021-09-07
    • 2015-09-12
    • 1970-01-01
    • 2019-01-13
    • 2018-11-27
    相关资源
    最近更新 更多