process.env.PWD vs process.cwd()

问题描述 投票:10回答:1

我正在使用Meteor JS ...并且在我的Meteor应用程序中,我正在使用node查询应用程序中不同目录的内容...。

[当我使用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有何不同?

javascript node.js meteor fs
1个回答
17
投票

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

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

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

可以操纵PWD,但这样做毫无意义,该变量没有被使用,只是为了方便而已。

对于计算路径,您可能想要这样:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.