表达js错误:“表达已弃用的res.send文件:使用res.sendFile”

时间:2015-04-15 04:49:21

标签: node.js express

我有这段代码:

app.get('/', function(req, res) {
        res.sendfile('public/index.html');
}); 

app.use("/public", express.static(__dirname + '/public'));

这给了我错误:

  

express deprecated res.sendfile:改为使用res.sendFile

因此,正如此类似帖子(express js error : "express deprecated res.sendfile: Use res.sendFile instead")中所建议的那样,我尝试将sendfile重命名为sendFile,但它又给我一个错误:

  

TypeError:path必须是绝对路径或指定root到res.sendFile
     在ServerResponse.sendFile(/Users/nacho4d/dev-enquete/node_modules/express/lib/response.js:394:11)
     at /Users/nacho4d/dev-enquete/app.js:37:6

我该怎么办?我不确定是否应该传递绝对路径(因为下一行:app.use("/public", ...。 我不太清楚指定root到res.sendFile 的含义。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

  

我该怎么办?我不确定是否应该传递绝对路径(因为下一行:app.use("/public", ...

我无法声称对express非常熟悉,但我怀疑你必须传递给sendFile的路径与路由有关。很可能你只需要将绝对路径传递给文件系统中的文件。

  

我也不太清楚将root指定为res.sendFile的意义。

如果查看documentation,可以看到sendFile接受选项对象作为第二个参数。 root是其中一个选项:

  

root:相对文件名的根目录。

它还有一个示例,说明如何使用这些选项(包括root)。

如果你传递一个相对文件路径,快递似乎不知道从哪里开始寻找文件(文件所在的目录?服务器启动的目录?),因此它想要你告诉它。