问题描述
我经常在节点上看到以下示例:
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
,这是错误的,因为当前目录为/
。