【问题标题】:Can't serve static files in express无法在 express 中提供静态文件
【发布时间】:2015-04-25 16:05:15
【问题描述】:

我正在使用翡翠和快递。 这是我提供静态文件的快速代码:

app.use(express.static(__dirname + "/frontend"));

这是我在 layout.jade 中的玉代码:

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

script(src='/bower_components/angular/angular.min.js')
script(src='/app.js')

由于某种原因,stackoverflow 不允许我显示我的文件夹结构,但我的前端文件夹中的每个文件都位于根目录中。 我尝试注释掉 express.static 并使用完整路径,但这也不起作用。

我收到 404 错误。

【问题讨论】:

  • 你试过link(rel='stylesheet', href='/frontend/css/style.css')
  • 您的设置中的__dirname 是什么?可以console.log()吗?是根目录吗?
  • 我试着把 /frontend/ 放了,但它不起作用。如何在服务器上 console.log __dirname?
  • 您在包含express.static() 的行之前添加代码行console.log(__dirname);。然后,当您运行服务器时,您可以在控制台上查看服务器启动时输出的内容。
  • 看来这就是问题所在,它不需要我进入 root 而是进入 /backend/。如何将其设置为 root?

标签: javascript node.js express pug


【解决方案1】:

您发布的上述代码将公开/ 上的资产。要在/frontend 上公开它们,您需要使用以下内容。

app.use(express.static("frontend", __dirname + "/frontend"));

如果要为 express.static 服务的文件创建一个“虚拟”(因为该路径实际上并不存在于文件系统中)路径前缀,可以指定静态目录的挂载路径,如下图:

app.use('/static', express.static('public'));

【讨论】:

    【解决方案2】:
    app.use('/frontend', express.static('frontend'));
    link(rel='stylesheet', href='/frontend/css/style.css')
    

    【讨论】:

    • 这与 OP 希望它的工作方式不同。 OP 不需要在客户端的每个文件前面使用 /frontend,这是您推荐的。
    • 这也不起作用。这是我的控制台错误:GET localhost:3000/frontend/css/style.css 404(未找到)
    猜你喜欢
    • 2019-01-19
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    相关资源
    最近更新 更多