Node.js:fs文件系统模块的路径动态拼接问题

277 阅读1分钟

动态路径拼接

在fs文块操作文件时,若提供的路径是以./../开头的相对路径则代码在运行的过程中,fs模块会自行将当前执行node命令的终端所处的目录与相对路径进行拼接

问题所在

前提:当js文件与目标文件在同一个目录,且设置的命令为相对路径
操作:未在目标所在目录进行node.js命令的执行(如:node .\package\命令.js)

解决方式

  1. 在为fs模块提供路径时,直接提供完整的文件路径
    • Vscode中可直接右键文件复制目标文件的路径
    • 注意:需将''改成'\'(js中:转义符,\:斜线)
  2. __dirname+/目标文件.txt替换相对路径
    • __dirname:本js文件所处的目录
    const fs = require('fs')
    
    fs.readFile(__dirname+'/1.txt','utf-8',callback)
    

注:最后使用的__dirname + 相对路径的语法并非规范,会在下一篇导入path模块后进行优化