首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >res.sendFile绝对路径

res.sendFile绝对路径
EN

Stack Overflow用户
提问于 2014-08-23 23:20:19
回答 12查看 326.8K关注 0票数 151

如果我做一个

代码语言:javascript
复制
res.sendfile('public/index1.html'); 

然后我收到一个服务器控制台警告

express已弃用res.sendfile:请改用res.sendFile

但它在客户端运行得很好。

但当我将其更改为

代码语言:javascript
复制
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')));

添加我的目录结构:

代码语言:javascript
复制
/Users/sj/test/
....app/
........models/
....public/
........index1.html

这里要指定的绝对路径是什么?

我使用的是Express 4.x。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2014-08-24 00:26:06

express.static中间件独立于res.sendFile,所以用public目录的绝对路径初始化它不会对res.sendFile产生任何影响。您需要在res.sendFile中直接使用绝对路径。有两种简单的方法可以做到:

  1. res.sendFile(path.join(__dirname, '../public', 'index1.html'));
  2. res.sendFile('index1.html', { root: path.join(__dirname, '../public') });

注意: __dirname返回当前执行的脚本所在的目录。在您的例子中,server.js看起来像是在app/__中。因此,要使用public__,您需要先返回一个级别:../public/index1.html__。

注意: 需要是require__d,上面的代码才能工作:var path = require('path');

票数 337
EN

Stack Overflow用户

发布于 2015-07-25 01:42:30

只需尝试以下操作:

代码语言:javascript
复制
res.sendFile('public/index1.html' , { root : __dirname});

这对我很有效。root:__dirname将采用上面示例中server.js所在的地址,然后访问index1.html (在本例中),返回的路径是访问公共文件夹所在的目录。

票数 53
EN

Stack Overflow用户

发布于 2015-11-20 16:35:25

代码语言:javascript
复制
res.sendFile( __dirname + "/public/" + "index1.html" );

其中__dirname将管理当前执行的脚本( server.js )所在目录的名称。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25463423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档