process.env.PWD vs process.cwd()

时间:2015-07-14 18:45:50

标签: javascript node.js meteor fs

我正在使用Meteor JS ...并且在我的Meteor应用程序中我使用节点来查询应用程序内不同目录的内容....

当我使用process.env.PWD查询文件夹的内容时,我得到的结果与使用process.cwd()查询文件夹结果的结果不同。

var dirServer = process.env.PWD + '/server/';
var dirServerFiles = fs.readdirSync(dirServer);
console.log(dirServerFiles); //outputs: [ 'ephe', 'fixstars.cat', 'sepl_30.se1', 'server.js' ]

VS

var serverFolderFilesDir = process.cwd() +"/app/server";
var serverFolderFiles = fs.readdirSync(serverFolderFilesDir);
console.log(serverFolderFiles); //outputs: [ 'server.js' ]

使用process.cwd()只显示' server.js'在流星内。

这是为什么? process.cwd()与process.env.PWD有什么不同?

1 个答案:

答案 0 :(得分:13)

他们是相关的,但不是一回事。

process.env.PWD进程启动时的工作目录。这对整个过程保持不变。

process.cwd()当前工作目录。它反映了通过process.chdir()进行的更改。

操纵PWD是可能的,但这样做是没有意义的,任何事情都不会使用该变量,只是为了方便起见。

对于计算路径,您可能希望这样做:

var path = require('path');
path.resolve(__dirname, 'app/server')

其中__dirname反映了此代码在驻留中定义的源文件的目录。期望cwd()在任何地方附近是错误的。如果您的服务器进程是从任何地方启动的,但使用cwd()主源目录的所有路径都将不正确。