跳到主要内容

node.js 中的魔术变量

· 阅读需 1 分钟
一介布衣
全栈开发者

魔术变量一词应该出自php语言,或者是本人第一次听说魔术变量是从php得知的.因为它是随系统运行环境变化而变化的,因此得名.

node.js 下也有环境变量,最常见的有获取当前运行的脚本文件,获取当前运行脚本文件所在的目录.

使用方法非常简单:

//魔术变量
//获取当前运行脚本文件的文件名
console.log(__filename);

//获取当前运行脚本文件所在的目录
console.log(__dirname);

执行效果:

很多初学者第一次看到这两个变量时,会把它们和 process.cwd() 混在一起。其实三者的含义并不一样:

  • __filename 表示当前脚本文件的完整路径
  • __dirname 表示当前脚本所在目录
  • process.cwd() 表示当前命令执行时所在的工作目录

这个差异在做配置文件读取、静态资源拼路径、模块初始化时特别重要。很多“本地能跑、换个启动方式就报错”的问题,往往就是因为把脚本目录和工作目录混为一谈。

如果你只是想拼当前文件旁边的资源路径,优先考虑 __dirname;如果你关心的是命令从哪里被执行,才去看 process.cwd()