res.sendFile绝对路径
如果我做一个
res.sendfile('public/index1.html');
然后我收到服务器控制台警告
表达已弃用
res.sendfile
:res.sendFile
改为使用
但它在客户端工作正常。
但是当我将其更改为
res.sendFile('public/index1.html');
我得到一个错误
TypeError:路径必须是绝对路径或将根目录指定为
res.sendFile
并且index1.html
不呈现。
我无法弄清楚绝对路径是什么。我的public
目录与处于同一级别server.js
。我正在res.sendFile
使用server.js
。我也宣布app.use(express.static(path.join(__dirname,
'public')));
添加我的目录结构:
/Users/sj/test/....app/
........models/
....public/
........index1.html
在此处指定的绝对路径是什么?
我正在使用Express4.x。
回答:
该express.static
中间件是独立的res.sendFile
,所以用你的绝对路径初始化它public
目录不会做任何事情res.sendFile
。您需要直接使用绝对路径res.sendFile
。有两种简单的方法可以做到这一点:
res.sendFile(path.join(__dirname, '../public', 'index1.html'));
res.sendFile('index1.html', { root: path.join(__dirname, '../public') });
__dirname
返回当前正在执行的脚本所在的目录。在您的情况下,它看起来像server.js
在中app/
。因此,要进入public
,您首先需要退出一个级别:../public/index1.html
。
path
是一个内置模块,需要require
d才能使上述代码起作用:var
path = require('path');
以上是 res.sendFile绝对路径 的全部内容, 来源链接: utcz.com/qa/412808.html