使用文件系统包读取文件
read a file using the file-system package
我正在尝试使用文件系统包读取文件。
参考:https://www.npmjs.com/package/file-system
我尝试读取的文件与执行读取的文件位于同一目录中(如下图所示)。
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').
你知道我做错了什么或者对我可以尝试做些什么有什么想法吗?
问题是,您正在从另一个目录执行 node
命令:js-practice/
.
要使 fs.readFileSync('./data.txt');
在您的情况下工作,您需要直接 运行 node
file-system-and-reduce
目录
file-system-and-reduce $ node reduce2.js
否则节点会尝试搜索:js-practice/data.txt
在您的案例中不存在。
一个好的解决方案是使用:__dirname 和 path.join
,以获得文件的绝对路径,这将允许您从任何位置调用脚本。
const fs = require('fs'); // Native fs module
const path = require('path');
const output = fs.readFileSync(path.join(__dirname, 'data.txt'));
console.log(output);
请记住,您提供的参考 不是 本机文件系统模块。
我正在尝试使用文件系统包读取文件。
参考:https://www.npmjs.com/package/file-system
我尝试读取的文件与执行读取的文件位于同一目录中(如下图所示)。
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').
你知道我做错了什么或者对我可以尝试做些什么有什么想法吗?
问题是,您正在从另一个目录执行 node
命令:js-practice/
.
要使 fs.readFileSync('./data.txt');
在您的情况下工作,您需要直接 运行 node
file-system-and-reduce
目录
file-system-and-reduce $ node reduce2.js
否则节点会尝试搜索:js-practice/data.txt
在您的案例中不存在。
一个好的解决方案是使用:__dirname 和 path.join
,以获得文件的绝对路径,这将允许您从任何位置调用脚本。
const fs = require('fs'); // Native fs module
const path = require('path');
const output = fs.readFileSync(path.join(__dirname, 'data.txt'));
console.log(output);
请记住,您提供的参考 不是 本机文件系统模块。