首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用fs.readdir在vps上返回ENOENT,而在本地主机上不返回ENOENT

问使用fs.readdir在vps上返回ENOENT,而在本地主机上不返回ENOENT
EN

Stack Overflow用户
提问于 2015-03-21 19:33:07
回答 1查看 340关注 0票数 0

因此,我正在处理一个节点js项目,并希望从一个目录加载所有文件。所有内容都可以在本地主机上运行,但是当我将它推到服务器时,它会抛出以下错误:

代码语言:javascript
复制
Error: ENOENT, readdir './maps/'

错误在这里(app.js):

代码语言:javascript
复制
        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上的目录树相同,所以我不知道这里发生了什么。

目录树看起来如下(在服务器和本地主机上):

代码语言:javascript
复制
src
    app.js
    maps
        map1.json
        map2.json
    routes
        index.js
        and so on...

服务器在amazon上运行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-22 00:38:09

在本地启动服务器时,通常会遇到这种情况,而不是远程启动。

例如,如果您在本地运行node app.js,而亚马逊实际上运行的是node src\app.js,那么您的相对and都不会正确解析。检查的一个简单方法是在您的process.cwd()开始时记录什么app.js报告,这样您就知道它实际上是在哪个目录中执行的。然后,您甚至可以使用-if -使用process.chdir()导航app.js脚本,以确保您的所有相对-if使用如下所示的操作

代码语言:javascript
复制
var path = require("path");
process.chdir(path.dirname(__filename));

它将使用"this script“的位置,即Nodejs中的全局__filename (这是一个绝对文件位置btw),找到它自己的目录(通过path模块),然后将活动目录更改为与当前文件所在的位置相同。

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

https://stackoverflow.com/questions/29187111

复制
相关文章

相似问题

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