在 Express 中从 sendfile() 移动到 sendFile()



我的代码如下:

router.get('/image',(req,res,next)=>{
const fileName = "path_to.jpg"
res.sendfile(fileName,(err)=>{
if (err) {
next(err);
} else {
console.log('Sent:', fileName);
}
});
})

当与Express 4按原样使用时,此路由器通过成功将所需的映像发送到客户端来工作。但是,服务器会发出一条关于"res.sendfile"被弃用的警告消息,我应该切换到"res.sendFile"((只需将"file"中的"f"大写((。

express deprecated res.sendfile: Use res.sendFile instead

当我这样做时,我的功能代码不再导致 200 状态,而是 500。除了"f"变成大写字母之外,没有其他方面发生变化。

我是否误解了明确警告要求我做什么?

我已经引用了(http://expressjs.com/en/api.html#res.sendFile(,并且没有看到我的代码片段有任何明显的错误......如果还有其他信息,我应该提供,请告诉我。

通过在路由器中包含模块"路径",我就可以创建一个绝对路径供 sendFile(( 使用,正如 @karthick 对原始帖子的评论所建议的那样。

因此,当调用 sendFile(( 时,请使用文件的相对路径作为文件名,并使用由"path"为选项"root"创建的绝对路径。

下面的示例假定映像文件与路由器脚本位于同一文件夹中。

router.get('/image',(req,res,next)=>{
const fileName = "1.jpg"
res.sendFile(fileName,{ root: path.join(__dirname, './') },(err)=>{
if (err) {
console.log(err)
next(err)
} else {
console.log('Sent:', fileName);
}
});
})

最新更新