我经常在节点中看到这样的例子:
process.env.GOOGLE_APPLICATION_CREDENTIALS = path.resolve(__dirname, 'credentials.json')
我知道path
在处理更复杂的情况时是一个有用的模块,但在这种情况下,为什么不使用呢
process.env.GOOGLE_APPLICATION_CREDENTIALS = './credentials.json'
来自文档:
当前模块的目录名。这与__filename的路径.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
,这是错误的,因为您当前的目录是/
。