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

时间:2015-01-15 01:48:09

标签: javascript html node.js

我正在关注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')我收到错误"路径必须是绝对路径或指定root到res.sendFile"当我尝试从服务器根添加__dirname或路径时,我得到一个ENOENT ..... / controllers / somethingItried / posts.html。有人可以解释解决这个问题的最佳方法以及服务器在考虑绝对路径的方法吗?我尝试从root创建路径失败了:

../布局/ posts.html

以及此页面的建议:

node.js TypeError: path must be absolute or specify root to res.sendFile [failed to parse JSON]

1 个答案:

答案 0 :(得分:0)

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

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