我经常在node中看到这样的例子:
process.env.GOOGLE_APPLICATION_CREDENTIALS = path.resolve(__dirname, 'credentials.json')
我理解path
在处理更复杂的情况时是一个有用的模块,但在这种情况下,为什么不只是使用
process.env.GOOGLE_APPLICATION_CREDENTIALS = './credentials.json'
?
从文档中:
当前模块的目录名。这与__filename的path.dirName()相同。
这意味着当使用该命令时:
process.env.GOOGLE_APPLICATION_CREDENTIALS = './credentials.json'
NodeJS将在当前工作目录中查找credentials.json
而当使用该命令时:
process.env.GOOGLE_APPLICATION_CREDENTIALS = path.resolve(__dirname, 'credentials.json')
NodeJS将在此模块所在的同一目录中查找credentials.json
假设您有这样的目录结构:
/
+-- home
| +-- USERNAME
| +-- project
| +-- index.js
| +-- credentials.json
如果运行以下命令(从根目录/
):
cd home/USERNAME/project
node index.js
代码在这两种情况下都能正常工作。
但如果你这样经营
node home/USERNAME/project/index.js
使用path.resolve
,您将得到:home/username/project/credentials.json
,这是正确的
没有它,您将得到:。/credentials.json
,这是错误的,因为您的当前目录是/
。