所以我正在研究一个节点js项目,我想从一个目录加载所有文件。一切都可以在localhost上运行,但是当我将其推送到服务器时,它将引发以下错误:
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..
}
});
});
});
我对服务器上的目录树进行了三重检查,它的确与本地主机上的目录树相同,所以我不知道这里发生了什么。
目录树如下所示(在服务器和本地主机上):
src
app.js
maps
map1.json
map2.json
routes
index.js
and so on...
该服务器在Amazon Linux上运行。
当您从本地目录而非远程目录启动服务器时,通常会遇到此问题。
例如,如果您node app.js
从$\src\>
本地运行,而Amazon实际上在运行node src\app.js
,则您的相对目录都无法正确解析。一种简单的检查方法是process.cwd()
在的开始处记录哪些报告app.js
,以便知道它实际在哪个目录中执行。甚至,如果您愿意,也可以使用process.chdir()
浏览app.js脚本来确保所有相对迪尔斯使用类似的东西工作
var path = require("path");
process.chdir(path.dirname(__filename));
它将使用“此脚本”的位置__filename
(Nodejs中的全局位置)(这是绝对文件位置),找到其拥有的目录(通过path
模块),然后将活动目录更改为与当前目录相同的目录文件位于。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句