You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用chokidar获取目录文件名存入数组后打印为空如何解决

原因说明

该问题由异步执行时序导致:chokidar的目录扫描、事件触发均为异步操作,chokidar.watch启动后不会阻塞后续同步代码执行,你写在监听逻辑外的console.log(currentData)是同步代码,会在chokidar完成目录扫描、触发任何事件回调之前就执行完毕,此时数组还未被推入任何元素,因此打印为空。你的数组push逻辑本身没有问题,也不存在空路径覆盖的情况。

实现方案

如果需要获取初始扫描完成后的全量文件路径,监听chokidar内置的ready事件即可,该事件会在初始目录扫描完成、所有初始文件的新增事件都触发结束后执行:

const chokidar = require('chokidar');

const currentData = []
const watcher = chokidar.watch('./dirPATH')

watcher.on('all', (event, path) => {
  // 可根据需求过滤事件类型,例如仅新增文件时push:if (event === 'add')
  if (path?.trim()) { // 简化空值校验逻辑
    currentData.push(path);
  }
  console.log(path)
});

// 初始扫描完成后触发,可拿到全量初始文件路径
watcher.on('ready', () => {
  console.log(currentData)
  // 如果不需要后续监听文件变化,可在此处关闭watcher
  // watcher.close()
})

// 后续如果需要获取实时更新的文件列表,在对应业务逻辑的执行时机直接访问currentData即可

内容的提问来源于stack exchange,提问作者seriously

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:24:04