使用文件系统包

时间:2018-05-29 00:00:37

标签: javascript node.js filesystems

我正在尝试使用文件系统包读取文件。

参考:https://www.npmjs.com/package/file-system

我尝试读取的文件与执行读取的文件位于同一目录中(如下所示)。

enter image description here

reduce2.js文件中的代码就是这样:

const fs = require('fs')

var output = fs.readFileSync('data.txt')

console.log(output);

这是我从命令行运行文件时遇到的错误:

➜  js-practice node functional-programming-mpj/file-system-and-reduce/reduce2.js 
fs.js:638
  return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
                 ^

Error: ENOENT: no such file or directory, open 'data.txt'
    at Object.fs.openSync (fs.js:638:18)
    at Object.fs.readFileSync (fs.js:540:33)
    at Object.<anonymous> (/Users/jackburum/tutorials/js-practice/functional-programming-mpj/file-system-and-reduce/reduce2.js:3:17)
    at Module._compi

告诉我文件系统模块无法找到该文件,但我无法弄清楚原因。

我尝试过的其他一些事情: - 我尝试使用import而不是require - 我试着明确声明当前目录,比如这个

fs.readFileSync('./data.txt').

你知道我做错了什么,或者对我能做些什么工作有什么想法?

1 个答案:

答案 0 :(得分:2)

问题是,您正在从另一个目录node执行js-practice/命令。

要使fs.readFileSync('./data.txt');适用于您的情况,您需要直接在node dir上运行file-system-and-reduce

file-system-and-reduce $ node reduce2.js

否则节点会尝试搜索:js-practice/data.txt,但在您的情况下不存在。

一个好的解决方案是使用:__dirnamepath.join,以获取文件的绝对路径,这样您就可以从任何位置调用脚本。

const fs = require('fs'); // Native fs module
const path = require('path');

const output = fs.readFileSync(path.join(__dirname, 'data.txt'));

console.log(output);

请记住,您提供的引用不是本机文件系统模块。