为什么在node环境中总是使用绝对路径

398 阅读1分钟

前言

我们使用node时,常常是使用path模块来拼接得到文件绝对路径,为什么总是这样使用呢,这其实跟相对路径和绝对路径有很大的关系。

正文

用读取文件来举一个简单的例子,随便创建个文件

image.png

当我们的工作目录在bbb下面时 image.png

const path = require('path');
const fs = require('fs');
const data = fs.readFileSync('./bb.txt')
console.log(data.toString());

运行文件,可以看到,成功的读取到了文件。

image.png

现在却换到aaa目录下,再次运行bbb文件夹下面的index.js文件

image.png 我们可以很明显的看到一个错误,没有找到这个文件。下面来说说原因。

原因

我们使用相对路径时,node也是进行路径拼接,但是它是使用process.cwd()然后在后面拼接上你写的文件路径。最后得到这个文件的路径。process.cwd()(用于获取node.js流程的当前工作目录),也就是下面这张图,那自然是找到不到文件的位置。也可以试着console.log(process.cwd());一下

image.png

现在使用绝对路径试一下

const path = require('path');
const fs = require('fs');
const data = fs.readFileSync(path.resolve(__dirname,'bb.txt'))
console.log(data.toString());

文件被成功的读取到了, __dirname获取当前执行文件的目录的绝对路径,也就是D:\桌面\打题\bbb,那么无论你当前工作目录怎么变,他永远都会在D:\桌面\打题\bbb这个目录下去寻找bb.txt这个文件,那肯定是找的到的。

image.png

结语

现在知道为什么总是使用绝对路径了吧,并不是名字的区别那么简单,不知道的可以去试试。