使用fs.readdir在vps上返回ENOENT,但在localhost上不返回
Using fs.readdir returns ENOENT on vps, but not on localhost
所以我正在处理一个node-js项目,我想从一个目录加载所有文件。一切都在本地主机上运行,但当我将其推送到服务器时,它会抛出以下错误:
Error: ENOENT, readdir './maps/'
错误在这里(app.js):
var dir='./maps/';
fs.readdir(dir,function(err,files){
if (err) throw err;
files.forEach(function(file){
fs.readFile(dir+file,'utf-8',function(err,data){
if (err) throw err;
//code..
}
});
});
});
我三次检查了服务器上的目录树,它确实和localhost上的相同,所以我不知道这里发生了什么。
目录树如下所示(在服务器和本地主机上):
src
app.js
maps
map1.json
map2.json
routes
index.js
and so on...
服务器运行在amazonlinux上。
当您从本地和远程不同的目录启动服务器时,通常会遇到这种情况。
例如,如果您在本地从$'src'>
运行node app.js
,而Amazon实际上运行node src'app.js
,那么您的任何相对目录都无法正确解析。一个简单的检查方法是在app.js
开始时记录process.cwd()
报告的内容,这样你就知道它实际上是在哪个目录中执行的。然后,如果你想的话,你甚至可以使用process.chdir()
来导航app.js脚本,以确保所有相关的目录都能使用之类的东西工作
var path = require("path");
process.chdir(path.dirname(__filename));
它将使用"此脚本"的位置,即Nodejs中的全局__filename
(这是一个绝对的文件位置btw),找到其拥有的目录(通过path
模块),然后将活动目录更改为与当前文件所在的目录相同。
相关文章:
- 使用fs.readdir在vps上返回ENOENT,但在localhost上不返回
- Angular http在Phone gap中返回错误,但在浏览器中成功
- Ajax调用在本地返回json,但在服务器上运行时返回xml
- 为什么 Math.log10 在某些系统上工作,但在其他系统上返回未定义
- 空数组在比较时返回 false,但在单独返回 true 时返回 true.为什么这样
- For 循环成功地将元素添加到数组中,但在之后返回空数组
- jQuery:单击Ajax返回数据,但在第一次调用时显示在警报中
- 日期差异在Firefox和IE中有效,但在Chrome中返回NaN
- 从 http 处理程序返回的 JSON 在 IE8 中为空,但在 IE10 或 Chrome 中不是
- jQuery AJAX 调用在 Firefox 中有效,但在 IE 中不起作用 - 返回有效响应
- IF 在 Chrome 中返回 true,但在 Safari 中返回 false
- Javascript在IE7,8,9中返回控制台错误,但在所有其他浏览器中都能完美运行
- JavaScript Fo.FolderExist() 在 PHP echo 中不起作用,但在 HTML 中返回 tru
- BluebirdJS抱怨承诺被创建,但在处理程序中没有返回
- 绑定事件在Chrome上失败,但在浏览器返回时在Firefox中正常
- Dojo.request for iteminfo-在Fiddler中返回代码200,但在浏览器中返回代码0
- 值已返回并推入数组,但在返回之外不可用
- php-json:encode在服务器上的angular控制器上的http调用中返回undefined,但在localh
- JavaScript对象数组在页面加载期间返回长度为零,但在控制台中不返回
- getElementById在代码中返回null,但在控制台中工作