process.env.PWD vs process.cwd()

pre*_*ton 7 javascript fs node.js meteor

我正在使用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' ]
Run Code Online (Sandbox Code Playgroud)

VS

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

使用process.cwd()只显示Meteor中的'server.js'.

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

tad*_*man 15

他们是相关但不是一回事.

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

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

它可以操纵,PWD但这样做是没有意义的,变量不被任何东西使用,它只是为了方便.

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

var path = require('path');
path.resolve(__dirname, 'app/server')
Run Code Online (Sandbox Code Playgroud)

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

  • 请注意,Windows 上**不**存在“process.env.PWD”。 (4认同)