【问题标题】:dirname vs. providing root path for sendFile() Node.jsdirname 与为 sendFile() Node.js 提供根路径
【发布时间】:2015-03-13 09:12:22
【问题描述】:

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

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

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

/controllers/static.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 TypeError: path must be absolute or specify root to res.sendFile [failed to parse JSON]

【问题讨论】:

    标签: javascript html node.js


    【解决方案1】:

    将根路径添加到下一个参数'options' 喜欢:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-29
      • 2017-07-30
      • 2013-06-14
      • 1970-01-01
      • 2019-08-01
      • 2017-08-31
      • 2019-09-26
      相关资源
      最近更新 更多