process.env.PWD 与 process.cwd()

Posted

技术标签:

【中文标题】process.env.PWD 与 process.cwd()【英文标题】:process.env.PWD vs process.cwd() 【发布时间】:2015-10-03 13:49:13 【问题描述】:

我正在使用 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' ]

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

使用 process.cwd() 只会在 Meteor 中显示 server.js

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

【问题讨论】:

我还没有阅读您的所有(长)帖子,但问题是什么?可能是您在开发过程中和构建过程之后都在为目录布局而苦苦挣扎。可能是您检查在.meteor/local/build 构建的内容。否则,请尽量简短地说明您的问题。 【参考方案1】:

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

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

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

可以操纵PWD,但这样做毫无意义,该变量没有被任何东西使用,它只是为了方便而存在。

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

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

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

【讨论】:

澄清一下,如果我们从不调用process.chdir(),是否意味着process.cwd() 将始终保持不变?

以上是关于process.env.PWD 与 process.cwd()的主要内容,如果未能解决你的问题,请参考以下文章

在 DigitalOcean Ubuntu 14.04 中的 Meteor 上的 Webshot 失败

C# 中的 Process.Start 与 Process `p = new Process()`?

OpenCV4.0 与 Processing 图像格式分析和转换

process.cwd() 与 __dirname 有啥区别?

Process.Start 与网络共享和空间

OpenCV4.0 与 Processing 图像格式分析和转换