如果我做一个
res.sendfile('public/index1.html');
然后我收到一个服务器控制台警告
express已弃用
res.sendfile
:请改用res.sendFile
但它在客户端运行得很好。
但当我将其更改为
res.sendFile('public/index1.html');
我得到一个错误
TypeError:路径必须是绝对路径或指定
res.sendFile
的根路径
并且不呈现index1.html
。
我无法弄清楚绝对路径是什么。我在与server.js
相同的级别上有public
目录。我正在和server.js
一起做res.sendFile
。我还声明了app.use(express.static(path.join(__dirname, 'public')));
添加我的目录结构:
/Users/sj/test/
....app/
........models/
....public/
........index1.html
这里要指定的绝对路径是什么?
我使用的是Express 4.x。
发布于 2014-08-24 00:26:06
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
__。
发布于 2015-07-25 01:42:30
只需尝试以下操作:
res.sendFile('public/index1.html' , { root : __dirname});
这对我很有效。root:__dirname将采用上面示例中server.js所在的地址,然后访问index1.html (在本例中),返回的路径是访问公共文件夹所在的目录。
发布于 2015-11-20 16:35:25
res.sendFile( __dirname + "/public/" + "index1.html" );
其中__dirname
将管理当前执行的脚本( server.js
)所在目录的名称。
https://stackoverflow.com/questions/25463423
复制相似问题