NodeJS Express.js文件系统路由器

bksxznpy  于 2023-08-04  发布在  Node.js
关注(0)|答案(2)|浏览(126)

我只是想问,有没有可能用express.js路由来做基于文件系统的路由?像Next.js这样的东西。

a7qyws3x

a7qyws3x1#

我不建议这样做,因为这可能会成为一个安全问题。但是如果你真的想,这很容易做到。你可以只听app.get(“*”)。示例如下所示:

let path = require("path")
let express = require("express")
let app = express()
let fs = require("fs")

app.get("*", (req,res) => {
    let filePath = path.join(__dirname, "routes", req.path)
    if(!fs.existsSync(filePath)) return res.sendStatus(404)
    res.sendFile(filePath)
})

app.listen(80)

字符串
这将递归并加载“routes”文件夹(或任何子目录)中的任何文件。我用html做了这个,所以我做了sendFile(),但是我相信它也应该和.render()一起工作。
我强烈建议不要这样做,因为它可能会让人们在你的目录结构中爬上爬下,在他们试图获取的路径上做一些手脚。

w6lpcovy

w6lpcovy2#

https://www.npmjs.com/package/express-file-routing
试试这个。它列出了所有可用的文件并只为它们启用路由。这也支持路径参数。

相关问题