我正在使用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有什么不同?
答案 0 :(得分:13)
他们是相关的,但不是一回事。
process.env.PWD
是进程启动时的工作目录。这对整个过程保持不变。
process.cwd()
是当前工作目录。它反映了通过process.chdir()
进行的更改。
操纵PWD
是可能的,但这样做是没有意义的,任何事情都不会使用该变量,只是为了方便起见。
对于计算路径,您可能希望这样做:
var path = require('path');
path.resolve(__dirname, 'app/server')
其中__dirname
反映了此代码在驻留中定义的源文件的目录。期望cwd()
在任何地方附近是错误的。如果您的服务器进程是从任何地方启动的,但使用cwd()
主源目录的所有路径都将不正确。