美文网首页
node __dirname 解析 与 fs模块文件操作注意事项

node __dirname 解析 与 fs模块文件操作注意事项

作者: LilyLaw | 来源:发表于2019-08-05 20:06 被阅读0次

    node中我们可以使用相对路径,那为什么要用__dirname这个变量来找绝对路径呢???
    下面的代码中给大家演示一个小例子:

    文件操作 fileOperate.js

    // fileOperate.js
    const fs = require('fs');
    
    console.log(__dirname);
    console.log(__filename);
    
    fs.readFile('../calc.js','utf8',(err,content)=>{
        if(err) throw err;
        console.log(content);
    })
    

    将fileOperate.js 载入 testModule.js

    // testModule.js
    const testModule = require('./modules/fileOperate.js');
    

    运行 testModule.js


    运行结果

    文档结构:


    文档结构

    我们发现一个很奇怪的现象:console.log()打印出来的结果是对的,但是fs模块读文件的时候相对路径是错的,这是为啥呢???

    原来fs.readFile()读文件时,文件路径是以入口文件为基准,在此基础上取相对路径
    例子里面,入口文件是testModul.js,所以取相对路径就是错的了。

    为了防止这种问题发生(项目开发过程中我们可能会把testModule.js 文件移动到任何地方),fs文件操作都取被操作文件的绝对路径

    所以fileOperate.js 文件应该改为

    const fs = require('fs');
    
    console.log(__dirname);
    console.log(__filename);
    
    fs.readFile(`${__dirname}/../calc.js`,'utf8',(err,content)=>{
        if(err) throw err;
        console.log(content);
    })
    

    再运行,就对啦!

    相关文章

      网友评论

          本文标题:node __dirname 解析 与 fs模块文件操作注意事项

          本文链接:https://www.haomeiwen.com/subject/vodvdctx.html