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 图像格式分析和转换