dirname vs. 为 sendFile() Node.js提供根路径

dirname vs. providing root path for sendFile() Node.js

本文关键字:js 路径 Node vs sendFile dirname      更新时间:2023-09-26

我正在遵循有关 MEAN 堆栈的教程,但它有点旧,并且作者使用的一些方法已被弃用。他使用 sendfile(),我将其更改为 sendFile(),因为服务器向我发出有关 sendfile() 被弃用的警告。新的 sendFile() 说它采用绝对路径而不是相对路径。我有一个有效的端点:

app.get('/', function (req, res){
    res.sendFile(__dirname + 'layouts/posts.html')
})

在服务器中,但现在我们将所有端点分解为控制器。当前(相关)文件结构如下所示:

/

控制器/静态.js

/layouts/posts.html

本教程说/controllers 中的端点应该看起来像这样:

var router = require('express').Router()
router.get('/', function (req, res){
    res.sendFile('layouts/posts.html')
})
module.exports = router

在服务器中使用此相应的代码:

app.use(require('./controllers/static'))

使用('layouts/post.html'),我收到错误"路径必须是绝对路径或指定根到 res.sendFile",当我尝试从服务器根目录添加__dirname或路径时,我得到一个 ENOENT ...../controllers/somethingItried/posts.html。有人可以解释解决此问题的最佳方法以及服务器在这里考虑的绝对路径吗?我尝试从根创建路径失败了:

../layouts/posts.html

以及此页面的建议:

node.js 类型错误:路径必须是绝对的或指定根目录到 res.sendFile [解析 JSON 失败]

将根路径添加到下一个参数"选项"喜欢:

res.sendFile('layouts/posts.html', {root: __dirname});