Express:使用app.use()在Express中提供静态文件,但在*路由上不起作用



我正在尝试在任何路由上使用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....')
})

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

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

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

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

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

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

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

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

最新更新