删除监视文件夹时的节点监视 EPERM

Posted

技术标签:

【中文标题】删除监视文件夹时的节点监视 EPERM【英文标题】:Node watch EPERM when the watched folder is deleted 【发布时间】: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 删除并重新生成它的内容会怎样。为什么你认为只是“他看着一个文件夹,去那里,右键单击并删除它”? 【参考方案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');
  
);

【讨论】:

以上是关于删除监视文件夹时的节点监视 EPERM的主要内容,如果未能解决你的问题,请参考以下文章

EPERM 阻止的文件写入权限 - 删除然后写入新文件。节点.js

如何修复 react-scripts 启动时的“错误监视文件以进行更改:ECONNRESET”错误?

当文件被删除并再次创建时,inotify 停止监视文件

git删除未监视的文件

如何使用 nodemon 监视正在删除并添加新文件的文件夹?

如何使用看门狗监视在Python中创建或删除的文件的时间