如果你查看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'));
你不能违反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'); });