当前位置:  开发笔记 > 编程语言 > 正文

Express.js"path必须是绝对路径或指定root到res.sendFile"错误

如何解决《Express.js"path必须是绝对路径或指定root到res.sendFile"错误》经验,为你挑选了2个好方法。



1> Hiren S...:

如果你查看sendFile的快速代码,它会检查这个条件:

if (!opts.root && !isAbsolute(path)) {
    throw new TypeError('path must be absolute or specify root to res.sendFile');
}

因此,您必须通过提供root密钥传递绝对路径或相对路径.

res.sendFile('test2.html', { root: '/home/xyz/code/'});

如果你想使用相对路径然后你可以使用path.resolve它来使它成为绝对路径.

var path = require('path');
res.sendFile(path.resolve('test2.html'));



2> rashad..:

你不能违反res.sendFile()的官方文档

除非在options对象中设置了root选项,否则path必须是文件的绝对路径.

但我知道你不想__dirname每次都复制smth ,所以为了你的目的,我认为你可以定义自己的中间件:

function sendViewMiddleware(req, res, next) {
    res.sendView = function(view) {
        return res.sendFile(__dirname + "/views/" + view);
    }
    next();
}

之后,您可以轻松地使用此类中间件

app.use(sendViewMiddleware);

app.get('/randomlink', function(req, res) {
    res.sendView('test2.html');
});

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有