表示不赞成使用res.sendfile:请改用res.sendfile

express deprecated res.sendfile: Use res.sendFile instead

本文关键字:sendfile res 不赞成 表示      更新时间:2023-09-26

在我的router/index.js中,我使用res.sendfile(..)如下:

var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res) {
    res.sendfile('public/app.html');
});
module.exports = router;

这是我的目录结构:

/Users/lucas/nodeProject/
....app.js
....public/
........app.html
....routes/
........index.js

这个示例的目的是通过http://myurl.com/而不是http://myurl.com/app.html登录到我的页面。一切都很好,除了我在服务器端控制台上收到以下消息:

express deprecated res.sendfile: Use res.sendFile instead

有人知道原因吗?以及如何解决这个问题?简单地用res.sendfile(..)代替res.sendFile(..)会给我一个错误:

path must be absolute or specify root to res.sendFile

我已经尝试了其他选项,在这里和这里概述了res.sendFile('app.html', { root: path.join(__dirname, '../public') });,但它只给了我这个错误:

ReferenceError: path is not defined

以下也是我的依赖项:

"dependencies": {
    "express": "~4.8.1",
    "static-favicon": "~1.0.0",
    "morgan": "~1.0.0",
    "cookie-parser": "~1.0.1",
    "body-parser": "~1.0.0",
    "debug": "~0.7.4",
    "jade": "*",
    "mongodb": "*",
    "mongoskin": "*",
    "connect-mongo": "*",
    "express-session": "~1.5.1"}

我对node.js也有点陌生,所以欢迎任何建议。

ReferenceError: path is not defined

这意味着您需要将var path = require('path');放在脚本顶部附近的某个位置。

您也可以通过添加以下代码行来获得相同的结果:

var dirPath = __dirname;
app.get('/', (req, res) => {
   res.sendFile(`${dirPath}/assets/views/index.html`);
});