[英]path.resolve vs. relative path in Node.js?
我经常在节点中看到这样的例子:
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
,这是错误的,因为您当前的目录是/
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.