【问题标题】:Node watch EPERM when the watched folder is deleted删除监视文件夹时的节点监视 EPERM
【发布时间】:2013-09-09 04:59:20
【问题描述】:

我很难在我的 Windows 机器上使用 nodejs fs.watch 观看文件夹。删除监视文件夹时会引发异常。

fs.watch('somedir', function (event, filename) { console.log('event is: ' + event); if (filename) { console.log('filename provided: ' + filename); } else { console.log('filename not provided'); } });

当我删除 somedir 时,它会引发异常而不是回调。

【问题讨论】:

  • EPERM 表示不允许操作。检查目录权限。
  • 权限都设置好了。这只发生在文件夹被删除之后而不是之前。
  • 我认为您不应该删除正在观看的文件夹,如果要监视文件夹的删除,请观看其父文件夹
  • @WillemD'Haeseleer 为什么不呢?如果 Grunt 删除并重新生成它的内容会怎样。为什么你认为只是“他看着一个文件夹,去那里,右键单击并删除它”?

标签: javascript windows node.js fs


【解决方案1】:

fs.watch 返回一个fs.FSWatcher 对象,这会引发错误。

我刚刚对此进行了测试,似乎在删除文件夹时引发了错误事件。 这是处理它的代码:

var fs = require('fs');

var path = "C:\\somedir";

var watcher = fs.watch(path, function (event, filename) {
  console.log('event is: ' + event);
  if (filename) {
    console.log('filename provided: ' + filename);
  } else {
    console.log('filename not provided');
  }
});


watcher.on('error', function(err) {
  if (!fs.existsSync(path)) {
    console.log('folder deleted');
  }
});

【讨论】:

    最近更新 更多