fs.watch fired twice when I change the watched file

avicennasoftwarelabs picture avicennasoftwarelabs · Oct 19, 2012 · Viewed 30.8k times · Source
 fs.watch( 'example.xml', function ( curr, prev ) {
   // on file change we can read the new xml
   fs.readFile( 'example.xml','utf8', function ( err, data ) {
     if ( err ) throw err;
     console.dir(data);
     console.log('Done');
   });
 });

OUTPUT:

  • some data
  • Done X 1
  • some data
  • Done X 2

It is my usage fault or ..?

Answer

Pero P. picture Pero P. · Oct 19, 2012

The fs.watch api:

  1. is unstable
  2. has known "behaviour" with regards repeated notifications. Specifically, the windows case being a result of windows design, where a single file modification can be multiple calls to the windows API