我写代码习惯用相对路径,相信有不少人和我一样在这入坑。但是使用相对路径,在当使用nodejs的fs模块读取文件时就有可能会给自己挖下一个大坑(经典的nodejs的路径问题)
比如:我们现在想运行models中的file.js文件,代码中我们要把文件写入data文件夹中,文件路径写的.data
运行方法一:(正确)
注意我们现在在根目录MVC_book下运行的
![42f6ba664379c9ee49afbdbea0c940eb.png](https://i-blog.csdnimg.cn/blog_migrate/0f93f9f4b8acc0fe09c941c19ccd475e.jpeg)
运行方法二:(错误 )
注意我们现在是进入到models文件夹下运行的
![287b261f25eaac062e584a73a9fe0978.png](https://i-blog.csdnimg.cn/blog_migrate/2a6b8ceec9efe5558fd1e390da54a035.jpeg)
为什么这个运行方法,运行失败呢?按照我们习惯的运行方法,进入到文件所在的文件夹下运行程序也是可以的啊?这就涉及到Node.js中fs模块读取文件的一个路径问题。我们的代码是要把内容写入到文件baseurl中,路径是 ./data,这里注意,fs模块读取文件的相对路径是以控制台的路径为基准的,也就是一启动file.js的位置为基准的,而不是以file.js文件的位置。
如果先 cd models进入到models文件夹中再运行文件,那么baseurl就要改为../data