提问者:小点点

为什么在NodeJS中使用path.Resolve而不是relative path?


我经常在node中看到这样的例子:

process.env.GOOGLE_APPLICATION_CREDENTIALS = path.resolve(__dirname, 'credentials.json')

我理解path在处理更复杂的情况时是一个有用的模块,但在这种情况下,为什么不只是使用

process.env.GOOGLE_APPLICATION_CREDENTIALS = './credentials.json'


共1个答案

匿名用户

从文档中:

当前模块的目录名。这与__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,这是错误的,因为您的当前目录是/