为什么这个FS循环读取的文件名,但不是他们的内容?

我想要做的是输出一个文件夹中的所有文件的内容:

const fs = require('fs') , input = process.argv[2] fs.readdir(__dirname + `/${input}/`, (err, files) => { if (err) { console.log(err) return } files.forEach((file) => { console.log(file) fs.readFile(file, 'utf8', (err, data) => { console.log(data) }) }) }) 

但我困惑console.log(file)输出文件名:

 alex@alex-K43U:~/node/m2n/bin$ node index4.js folder test.txt test2.txt 

但是console.log(data)返回undefined

 alex@alex-K43U:~/node/m2n/bin$ node index4.js folder undefined undefined 

这里发生了什么事?

编辑:

也许有__dirname的问题? 这是我的项目结构:

在这里输入图像说明

你需要传递你的文件名的完整path:

 fs.readFile(__dirname + `/${input}/` + file, 'utf8', (err, data) => { 

我会build议你logging错误,以便下次发生什么错误:

 fs.readFile(__dirname + `/${input}/` + file, 'utf8', (err, data) => { if (err) { console.log(err) } console.log(data) })