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