◆
Node.js path 模块常用 API:resolve、cwd 与 __dirname
写构建脚本或 node 工具时,路径拼错是最常见的坑,根源在于 process.cwd() 和 __dirname 不是一回事:前者是启动进程时所在的那个目录(跟你在哪儿敲命令有关),后者是当前这个文件所在的目录(跟文件位置有关)。同一份代码,从项目根执行和进到子目录里执行,process.cwd() 会给出不同结果,__dirname 则始终不变。
所以配置文件里要引用项目内的资源,通常拿 process.cwd() 作基准(约定命令都在项目根跑);而封装成 npm 包给别人用的模块要定位自己的内置文件,必须用 __dirname,否则用户在任意目录调用就找不到文件了。下面这段把两者打印出来做对比。
path.resolve 从右往左拼接,遇到绝对路径就停止,最终一定返回绝对路径。中间那个 '.' 参数不影响结果,写上只是显式表达「从当前目录往下找」。
const { resolve } = require('path');
console.log('process.cwd():', process.cwd());
console.log('__dirname:', __dirname);
function pathResolve(dir) {
return resolve(process.cwd(), '.', dir);
}
console.log(pathResolve('test'));


还没有留言,来发表第一条吧~