我正在使用chokidar观察者来观看目录。我想在fs.readFile的回调中使用路径名。如果我按如下方式编写代码:
watcher.on('add', path => {
var log = console.log.bind(console);
log(`File ${path} has been added`);
fs.readFile(path,'utf-8', function(err, data,path) {
log(`File ${path} has been read`);
......
......
以下是输出:
已添加文件test1.txt
文件未定义已被阅读
如何在fs.readfile回调中获取path的值
答案 0 :(得分:1)
fs.readFile(path,'utf-8', callback..
,此处回调只包含两个参数1-error , 2-data
。错误和数据的值将传递给相应的参数。 (首先注意一个是错误而另一个是数据)。
您正在为此回调添加第三个参数,该回调永远不会包含任何值,因此您会看到undefined
因为fs
模块永远不会填充除error
和{之外的任何其他参数{1}}。所以,首先从回调参数中删除它,你的回调应该看起来像
data
现在您应该看到在控制台中打印的文件名。
此外,您始终可以使用 fs.readFile(path,'utf-8', function(err, data) {..
的{{1}}模块和
path
将在您指定的路径中返回文件的名称作为参数