Javascript 为什么在nodejs中使用path.resolve而不是相对路径?

Javascript 为什么在nodejs中使用path.resolve而不是相对路径?,javascript,node.js,path,Javascript,Node.js,Path,我经常在node中看到这样的示例: process.env.GOOGLE\u APPLICATION\u CREDENTIALS=path.resolve(\u\u dirname,'CREDENTIALS.json')) 我知道当处理更复杂的情况时,path是一个有用的模块,但是在这种情况下,为什么不使用它呢 process.env.GOOGLE_应用程序_凭证='。/CREDENTIALS.json' ?来自: 当前模块的目录名。这与_文件名的path.dirname()相同 这意味着在

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

process.env.GOOGLE\u APPLICATION\u CREDENTIALS=path.resolve(\u\u dirname,'CREDENTIALS.json'))
我知道当处理更复杂的情况时,
path
是一个有用的模块,但是在这种情况下,为什么不使用它呢

process.env.GOOGLE_应用程序_凭证='。/CREDENTIALS.json'

来自:

当前模块的目录名。这与_文件名的path.dirname()相同

这意味着在使用此选项时:

process.env.GOOGLE_应用程序_凭证='。/CREDENTIALS.json'
NodeJS将在当前工作目录中查找
credentials.json

在使用时:

process.env.GOOGLE\u APPLICATION\u CREDENTIALS=path.resolve(\u\u dirname,'CREDENTIALS.json'))
NodeJS将在该模块所在的同一目录中查找
credentials.json

假设您有如下目录结构:

/
+-- home
|   +-- USERNAME
|       +-- project
|           +-- index.js
|           +-- credentials.json
如果运行以下命令(从根目录
/
):

代码在这两种情况下都能正常工作

但是如果你像这样运行它

node home/USERNAME/project/index.js
使用
path.resolve
您将得到:
home/USERNAME/project/credentials.json
哪个是正确的

如果没有它,您将获得:
/credentials.json
,这是错误的,因为您当前的目录是
/

当前模块的目录名。这与_文件名的path.dirname()相同

这意味着在使用此选项时:

process.env.GOOGLE_应用程序_凭证='。/CREDENTIALS.json'
NodeJS将在当前工作目录中查找
credentials.json

在使用时:

process.env.GOOGLE\u APPLICATION\u CREDENTIALS=path.resolve(\u\u dirname,'CREDENTIALS.json'))
NodeJS将在该模块所在的同一目录中查找
credentials.json

假设您有如下目录结构:

/
+-- home
|   +-- USERNAME
|       +-- project
|           +-- index.js
|           +-- credentials.json
如果运行以下命令(从根目录
/
):

代码在这两种情况下都能正常工作

但是如果你像这样运行它

node home/USERNAME/project/index.js
使用
path.resolve
您将得到:
home/USERNAME/project/credentials.json
哪个是正确的


如果没有它,您将得到:
/credentials.json
,这是错误的,因为您当前的目录是
/

,这取决于您如何使用此变量。相对路径相对于工作目录,工作目录可能会因您启动节点应用程序的方式或编程方式而更改。
process.chdir('/go/find/your/credentials/now')
这取决于您如何使用此变量。相对路径是相对于工作目录的,工作目录可能会因您启动节点应用程序的方式或编程方式而更改。
process.chdir('/go/find/your/credentials/now')
Oh okey所以在节点中,与前端JS相比,脚本从何处执行很重要?因为我习惯于认为所有内容都与我当前正在编写的文件有关。哦,好的,那么在node中,与前端JS相比,脚本在哪里执行很重要?因为我习惯于认为一切都与我当前正在编写的文件有关。