【问题标题】:Express: serving static files in express using app.use() not working on * routeExpress:使用 app.use() 在 express 中提供静态文件在 * 路由上不起作用
【发布时间】:2022-02-07 20:09:05
【问题描述】:

我正在尝试在任何路线上使用 express 提供静态 html 和 css 文件。这些文件位于与 express 文件相同的目录中的公用文件夹中。快递代码如下:

const express = require('express')
const path = require('path')

const app = express()

// app.use('*', express.static('./public')); // Not Working
// app.use('/', express.static('./public')); // Working but only limited to home route
app.use(express.static('./public')); // Working but only limited to home route

app.listen(5000, () => {
  console.log('server is listening on port 5000....')
})

【问题讨论】:

    标签: html css express http


    【解决方案1】:

    如果该文件夹与您的节点应用程序在同一根目录中公开:

    app.use(express.static('public'))
    

    要为 express.static 函数服务的文件创建虚拟路径前缀(该路径实际上并不存在于文件系统中),请指定静态目录的挂载路径,如下所示:

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

    现在,您可以从 /static 路径前缀加载公共目录中的文件。

    http://localhost:3000/static/images/kitten.jpg http://localhost:3000/static/css/style.css

    但是,您提供给 express.static 函数的路径是相对于您启动节点进程的目录的。如果您从另一个目录运行 express 应用,使用您要服务的目录的绝对路径会更安全:

    const path = require('path') app.use('/static', express.static(path.join(__dirname, 'public')))

    【讨论】:

      猜你喜欢
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-07
      相关资源
      最近更新 更多