Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() #75

Closed
jeremypeter opened this issue Apr 28, 2013 · 42 comments
Closed

Comments

@jeremypeter
Copy link

I have an issue where on every 3rd save I get this: ERROR

It appears when I either save it 3 times within the same file or if I open up 3 different files, the error will appear afte the 3rd file has been saved.

Here's my code:

/*global module:false*/

var minimatch = require('minimatch');

module.exports = function (grunt) {

  grunt.initConfig({

    watch: {
      template: {
        files: '**/template.html',
        tasks: ['inlinecss', 'cssmin']
       },
       options: {
        nospawn: true
       }
      },
      cssmin: {
       minify: {
        files: [{
          src: 'template.html',
          dest: 'email.html'
         }]
        }
       },
       inlinecss: {
        main: {
         files: [{
          src: 'same_dir',
          dest: 'same_dir'
         }]
        }
       }
      });

  // Load tastks
  grunt.loadNpmTasks('grunt-contrib-cssmin');
  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-inline-css');

  // Default Task(s)
  grunt.registerTask('default', ['watch']);

  grunt.event.on('watch', function(action, filepath) {

    if (minimatch(filepath, grunt.config('watch.template.files'))) {

     // Current Working Directory
     var cwd = filepath.replace(filepath.substr(filepath.lastIndexOf('/') + 1), '');

     // Destination
     var dest = cwd + 'email.html';

     grunt.config('inlinecss.main.files.0.src', [filepath]);
     grunt.config('inlinecss.main.files.0.dest', dest);
     grunt.config('cssmin.minify.files.0.src', [filepath]);
     grunt.config('cssmin.minify.files.0.dest', dest);

    }
   });

 };

I basically have a folder structure that contains a template.html and an email.html. I work within the template.html and on every save, it creates the email.html that inlines the css and minifies the code.

@shama
Copy link
Member

shama commented Apr 29, 2013

I have honestly never seen that error before and have no idea how to solve it. I also couldn't reproduce the issue. I'm on OSX 10.8.3.

It looks like an issue with node, likely even libuv: https://github.com/joyent/libuv/blob/master/src/unix/fsevents.c#L200.
Could you open the issue over on one of those repos?

Sorry to punt it but I don't think there is any way I could fix this issue here. Thanks!

@steida
Copy link
Contributor

steida commented May 5, 2013

I have the same issue.

@jeremypeter
Copy link
Author

UPDATE: I fixed the issue. I believe I was tracking too many files using the pattern "**/template.html" on every reload. So I adjusted the grunt.event object to initially watch all files, then changed the file mapping to watch only the file being changed. Doing this prevented the issue from reoccurring.

Here's my code now:

/*global module:false*/

var minimatch = require('minimatch');

module.exports = function (grunt) {

  grunt.initConfig({

    watch: {
      template: {
        files: '**/template.html',
        tasks: ['inlinecss', 'htmlcompressor']
       },
       options: {
        nospawn: true
       }
      },
      htmlcompressor: {
       compile: {
        files: [{
          src: 'template.html',
          dest: 'email.html'
         }],
         options: {
          type: 'html',
          compressCss: true
         }
        }
       },
       inlinecss: {
        main: {
         files: [{
          src: 'email.html',
          dest: 'email.html'
         }]
        }
       }
      });

  // Load tasks
  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-inline-css');
  grunt.loadNpmTasks('grunt-htmlcompressor');

  // Default Task(s)
  grunt.registerTask('default', ['watch']);


  grunt.event.on('watch', function(action, filepath) {

    // Current working directory
    var cwd = filepath.replace(filepath.substr(filepath.lastIndexOf('/') + 1), '');

    // Destination is path/to/directory/email.html
    var dest = cwd + 'email.html';

    // Change file mapping to match directory of changed file
    grunt.config('watch.template.files', filepath);

    if (minimatch(filepath, grunt.config('watch.template.files'))) {
     grunt.config('inlinecss.main.files.0.src', [filepath]);
     grunt.config('inlinecss.main.files.0.dest', dest);
     grunt.config('htmlcompressor.compile.files.0.src', dest);
     grunt.config('htmlcompressor.compile.files.0.dest', dest);
    }

   });

 };

@snostorm
Copy link

snostorm commented May 7, 2013

I'm also seeing this issue. I'll take a look at @jeremypeter's workaround for now and pop in to see if this bug is reported somewhere in the dependent projects.

@steida
Copy link
Contributor

steida commented May 7, 2013

Grunt-contrib-watch has also a problem with Mocha: (0 tests ... on file change). When I run the same code on Windows, no mocha problems nor FSEventStreamStart strange warnings. Now Mac sucks.

@snostorm
Copy link

snostorm commented May 8, 2013

I have a theory this may have to do with how grunt watch reinitializes itself each time it runs. There may not be enough time between watches on the same resources (directories) so there's a race condition if the event stream is still be "scheduled" (not properly stopped/invalidated.)

While this might be a node-level issue, it is possible that we can do more to terminate the existing watch's subscriptions more properly before recreating the task.

@snostorm
Copy link

snostorm commented May 8, 2013

Can we reopen this? I found a solution based on my previous comments. Gaze supports a close() method which closes the existing subscriptions. My fix consists of:

  • Tracking the Gaze instances in an array when they're initialized
  • In grunt.registerTask('watch') ... wrapping the done() callback in a function which first loops over the Gaze instances, executing gaze.close() on each one before executing the actual Grunt task async done()

I'll attempt to submit a proper pull request when I can, but feel free to test it out sooner.

@shama
Copy link
Member

shama commented May 8, 2013

@snostorm I'll give that a go. atm it will try closing the watchers upon SIGINT but maybe it doesn't have enough time. Closing on the task done might be a better route though.

@shama shama reopened this May 8, 2013
@snostorm
Copy link

snostorm commented May 8, 2013

@shama I was actually hacking the latest npm version, so the watchers array didn't exist yet (nor did the SIGINT potential fix.) I had missed this difference there between the git repo and what's published. It is funny my suggested solution was similar in many ways.

Either way, I think explicitly calling close would be a more clean approach. Thanks!

@snostorm
Copy link

snostorm commented May 8, 2013

@shama: putting the close calls in taskrun.on('end', ...) -- which also didn't exist in my copy from npm -- also does the trick.

@shama shama closed this as completed in 5edea7e May 9, 2013
@shama
Copy link
Member

shama commented May 13, 2013

I figured out how to duplicate this issue. If you open a file descriptor on a file within a process then try to open another file descriptor on the same file with another process... bam:

2013-05-13 10:19 node[48447] (CarbonCore.framework) FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() => (null) (-21)

The problem here is sometimes file descriptors are not always closed properly with spawning child processes. So I'll need to look into that more. But at least now I know how to duplicate the issue to work on a fix for it upstream.

@shama
Copy link
Member

shama commented May 13, 2013

Oh and a way to get around this issue if you run into it is: killall -9 node to kill all running node processes. That will close the rogue opened file descriptors.

@shama
Copy link
Member

shama commented May 13, 2013

Opened an issue for this on nodejs/node-v0.x-archive#5463

@paolodm
Copy link

paolodm commented Jun 7, 2013

When is the next planned tag?

@kevindente
Copy link

I'm having this problem too. One observation is that I only seem to see it when a live-reload client is connected. Not sure if that makes sense - maybe the web server serving the updated file acts as the second process that triggers the error? Just a guess.

@reggi
Copy link

reggi commented Jul 16, 2013

I'm getting this right now, still no actionable solution?

@shama
Copy link
Member

shama commented Jul 16, 2013

@reggi The only thing that works for me is killall -9 node to ensure no other node process is still running and watching files. Then tighten up your watch patterns to try and watch as little amount of files as possible. The new version of the watch task, soon to be release, will also help avoid this as well.

@reggi
Copy link

reggi commented Jul 16, 2013

@shama I ran killall -9 node error still occurred. Defiantly need to tighten patterns. Thanks

@simonexmachina
Copy link

This has just started happening for me too. Previously fixed this by upgrading node, but now I'm on 0.10.22. Trying 0.11 now.

@shama
Copy link
Member

shama commented Nov 22, 2013

@aexmachina It should be patched in the latest node v0.10. Would you mind posting your Gruntfile so I can try and duplicate?

@simonexmachina
Copy link

It's an Ember App Kit, so the Gruntfile's spread over a whole bunch of files but here it is: https://gist.github.com/7595161

You can also see the other Grunt config files here: https://github.com/aexmachina/embify/tree/master/client/tasks

Here's the versions:

$ node -v
v0.10.22
$ npm list
app-kit@0.0.0 /Users/simonwade/dev/Workspace/spotify-collection/client
├─┬ bower@1.2.7
│ ├── abbrev@1.0.4
│ ├── archy@0.0.2
│ ├─┬ bower-config@0.5.0
│ │ ├── mout@0.6.0
│ │ └─┬ optimist@0.6.0
│ │   ├── minimist@0.0.5
│ │   └── wordwrap@0.0.2
│ ├── bower-endpoint-parser@0.2.1
│ ├─┬ bower-json@0.4.0
│ │ ├── deep-extend@0.2.6
│ │ └── intersect@0.0.3
│ ├── bower-logger@0.2.1
│ ├─┬ bower-registry-client@0.1.5
│ │ ├── async@0.2.9
│ │ ├─┬ bower-config@0.4.5
│ │ │ ├── mout@0.6.0
│ │ │ └─┬ optimist@0.6.0
│ │ │   ├── minimist@0.0.5
│ │ │   └── wordwrap@0.0.2
│ │ └── request-replay@0.2.0
│ ├─┬ cardinal@0.4.2
│ │ ├── ansicolors@0.2.1
│ │ └─┬ redeyed@0.4.2
│ │   └── esprima@1.0.4
│ ├─┬ chalk@0.2.1
│ │ ├── ansi-styles@0.2.0
│ │ └── has-color@0.1.1
│ ├── chmodr@0.1.0
│ ├─┬ fstream@0.1.24
│ │ └── inherits@2.0.1
│ ├─┬ fstream-ignore@0.0.7
│ │ ├── inherits@2.0.1
│ │ └─┬ minimatch@0.2.12
│ │   └── sigmund@1.0.0
│ ├── graceful-fs@2.0.1
│ ├─┬ handlebars@1.0.12
│ │ ├─┬ optimist@0.3.7
│ │ │ └── wordwrap@0.0.2
│ │ └─┬ uglify-js@2.3.6
│ │   ├── async@0.2.9
│ │   └─┬ source-map@0.1.30
│ │     └── amdefine@0.0.8
│ ├─┬ inquirer@0.3.4
│ │ ├── async@0.2.9
│ │ ├─┬ cli-color@0.2.3
│ │ │ ├── es5-ext@0.9.2
│ │ │ └─┬ memoizee@0.2.6
│ │ │   ├── event-emitter@0.2.2
│ │ │   └── next-tick@0.1.0
│ │ ├── lodash@1.2.1
│ │ └── mute-stream@0.0.3
│ ├── junk@0.2.1
│ ├── lru-cache@2.3.1
│ ├── mkdirp@0.3.5
│ ├── mout@0.7.1
│ ├── nopt@2.1.2
│ ├── open@0.0.4
│ ├── osenv@0.0.3
│ ├─┬ promptly@0.2.0
│ │ └─┬ read@1.0.5
│ │   └── mute-stream@0.0.4
│ ├── q@0.9.7
│ ├─┬ request@2.27.0
│ │ ├── aws-sign@0.3.0
│ │ ├── cookie-jar@0.3.0
│ │ ├── forever-agent@0.5.0
│ │ ├─┬ form-data@0.1.2
│ │ │ ├── async@0.2.9
│ │ │ └─┬ combined-stream@0.0.4
│ │ │   └── delayed-stream@0.0.5
│ │ ├─┬ hawk@1.0.0
│ │ │ ├── boom@0.4.2
│ │ │ ├── cryptiles@0.2.2
│ │ │ ├── hoek@0.9.1
│ │ │ └── sntp@0.2.4
│ │ ├─┬ http-signature@0.10.0
│ │ │ ├── asn1@0.1.11
│ │ │ ├── assert-plus@0.1.2
│ │ │ └── ctype@0.5.2
│ │ ├── json-stringify-safe@5.0.0
│ │ ├── mime@1.2.11
│ │ ├── node-uuid@1.4.1
│ │ ├── oauth-sign@0.3.0
│ │ ├── qs@0.6.5
│ │ └── tunnel-agent@0.3.0
│ ├─┬ request-progress@0.3.1
│ │ └── throttleit@0.0.2
│ ├── retry@0.6.0
│ ├── rimraf@2.2.2
│ ├── semver@2.1.0
│ ├── stringify-object@0.1.7
│ ├─┬ sudo-block@0.2.1
│ │ └─┬ chalk@0.1.1
│ │   ├── ansi-styles@0.1.2
│ │   └── has-color@0.1.1
│ ├─┬ tar@0.1.18
│ │ ├── block-stream@0.0.7
│ │ └── inherits@2.0.1
│ ├── tmp@0.0.21
│ ├─┬ unzip@0.1.9
│ │ ├─┬ binary@0.3.0
│ │ │ ├── buffers@0.1.1
│ │ │ └─┬ chainsaw@0.1.0
│ │ │   └── traverse@0.3.9
│ │ ├─┬ match-stream@0.0.2
│ │ │ └── buffers@0.1.1
│ │ ├─┬ pullstream@0.4.0
│ │ │ ├── over@0.0.5
│ │ │ └── slice-stream@0.0.0
│ │ ├── readable-stream@1.0.17
│ │ └── setimmediate@1.0.1
│ ├─┬ update-notifier@0.1.6
│ │ ├─┬ chalk@0.1.1
│ │ │ ├── ansi-styles@0.1.2
│ │ │ └── has-color@0.1.1
│ │ ├─┬ configstore@0.1.5
│ │ │ ├─┬ js-yaml@2.1.2
│ │ │ │ ├─┬ argparse@0.1.15
│ │ │ │ │ ├── underscore@1.4.4
│ │ │ │ │ └── underscore.string@2.3.3
│ │ │ │ └── esprima@1.0.4
│ │ │ └── lodash@1.3.1
│ │ ├─┬ request@2.22.0
│ │ │ ├── aws-sign@0.3.0
│ │ │ ├── cookie-jar@0.3.0
│ │ │ ├── forever-agent@0.5.0
│ │ │ ├─┬ form-data@0.0.8
│ │ │ │ ├── async@0.2.9
│ │ │ │ └─┬ combined-stream@0.0.4
│ │ │ │   └── delayed-stream@0.0.5
│ │ │ ├─┬ hawk@0.13.1
│ │ │ │ ├─┬ boom@0.4.2
│ │ │ │ │ └── hoek@0.9.1
│ │ │ │ ├── cryptiles@0.2.2
│ │ │ │ ├── hoek@0.8.5
│ │ │ │ └─┬ sntp@0.2.4
│ │ │ │   └── hoek@0.9.1
│ │ │ ├─┬ http-signature@0.10.0
│ │ │ │ ├── asn1@0.1.11
│ │ │ │ ├── assert-plus@0.1.2
│ │ │ │ └── ctype@0.5.2
│ │ │ ├── json-stringify-safe@4.0.0
│ │ │ ├── mime@1.2.11
│ │ │ ├── node-uuid@1.4.1
│ │ │ ├── oauth-sign@0.3.0
│ │ │ ├── qs@0.6.5
│ │ │ └── tunnel-agent@0.3.0
│ │ └── semver@2.0.11
│ └── which@1.0.5
├── connect-livereload@0.3.0
├─┬ glob@3.2.6
│ ├── inherits@2.0.1
│ └─┬ minimatch@0.2.12
│   ├── lru-cache@2.3.1
│   └── sigmund@1.0.0
├─┬ grunt@0.4.1
│ ├── async@0.1.22
│ ├── coffee-script@1.3.3
│ ├── colors@0.6.2
│ ├── dateformat@1.0.2-1.2.3
│ ├── eventemitter2@0.4.13
│ ├─┬ findup-sync@0.1.2
│ │ └── lodash@1.0.1
│ ├─┬ glob@3.1.21
│ │ ├── graceful-fs@1.2.3
│ │ └── inherits@1.0.0
│ ├── hooker@0.2.3
│ ├── iconv-lite@0.2.11
│ ├─┬ js-yaml@2.0.5
│ │ ├─┬ argparse@0.1.15
│ │ │ ├── underscore@1.4.4
│ │ │ └── underscore.string@2.3.3
│ │ └── esprima@1.0.4
│ ├── lodash@0.9.2
│ ├─┬ minimatch@0.2.12
│ │ ├── lru-cache@2.3.1
│ │ └── sigmund@1.0.0
│ ├─┬ nopt@1.0.10
│ │ └── abbrev@1.0.4
│ ├─┬ rimraf@2.0.3
│ │ └── graceful-fs@1.1.14
│ ├── underscore.string@2.2.1
│ └── which@1.0.5
├─┬ grunt-concat-sourcemap@0.3.1
│ └─┬ source-map@0.1.30
│   └── amdefine@0.0.8
├─┬ grunt-concurrent@0.3.1
│ └── lpad@0.1.0
├── grunt-contrib-clean@0.4.1
├─┬ grunt-contrib-coffee@0.7.0
│ └── coffee-script@1.6.3
├── grunt-contrib-concat@0.3.0
├─┬ grunt-contrib-connect@0.3.0
│ └─┬ connect@2.7.11
│   ├── buffer-crc32@0.2.1
│   ├── bytes@0.2.0
│   ├── cookie@0.0.5
│   ├── cookie-signature@1.0.1
│   ├── debug@0.7.2
│   ├── formidable@1.0.14
│   ├── fresh@0.1.0
│   ├── pause@0.0.1
│   ├── qs@0.6.5
│   └─┬ send@0.1.1
│     ├── mime@1.2.11
│     └── range-parser@0.0.4
├── grunt-contrib-copy@0.4.1
├─┬ grunt-contrib-cssmin@0.6.2
│ ├─┬ clean-css@1.1.3
│ │ └── commander@2.0.0
│ └─┬ grunt-lib-contrib@0.6.1
│   └── zlib-browserify@0.0.1
├─┬ grunt-contrib-jshint@0.6.4
│ └─┬ jshint@2.1.11
│   ├── cli@0.4.5
│   ├── console-browserify@0.1.6
│   ├─┬ minimatch@0.2.12
│   │ ├── lru-cache@2.3.1
│   │ └── sigmund@1.0.0
│   ├── shelljs@0.1.4
│   └── underscore@1.4.4
├─┬ grunt-contrib-uglify@0.2.4
│ ├─┬ grunt-lib-contrib@0.6.1
│ │ └── zlib-browserify@0.0.1
│ └─┬ uglify-js@2.4.0
│   ├── async@0.2.9
│   ├─┬ optimist@0.3.7
│   │ └── wordwrap@0.0.2
│   ├─┬ source-map@0.1.30
│   │ └── amdefine@0.0.8
│   └── uglify-to-browserify@1.0.1
├─┬ grunt-contrib-watch@0.4.4
│ ├─┬ gaze@0.3.4
│ │ ├── fileset@0.1.5
│ │ └─┬ minimatch@0.2.12
│ │   ├── lru-cache@2.3.1
│ │   └── sigmund@1.0.0
│ └─┬ tiny-lr@0.0.4
│   ├── debug@0.7.2
│   ├── faye-websocket@0.4.4
│   ├─┬ noptify@0.0.3
│   │ └─┬ nopt@2.0.0
│   │   └── abbrev@1.0.4
│   └── qs@0.5.6
├─┬ grunt-dom-munger@2.0.1
│ ├─┬ cheerio@0.12.3
│ │ ├─┬ cheerio-select@0.0.3
│ │ │ └─┬ CSSselect@0.3.11
│ │ │   ├── CSSwhat@0.4.1
│ │ │   └─┬ domutils@1.2.1
│ │ │     └── domelementtype@1.1.1
│ │ ├── entities@0.3.0
│ │ ├─┬ htmlparser2@3.1.4
│ │ │ ├── domelementtype@1.1.1
│ │ │ ├── domhandler@2.0.3
│ │ │ ├── domutils@1.1.6
│ │ │ └── readable-stream@1.0.17
│ │ └── underscore@1.4.4
│ └─┬ jsdom@0.5.7
│   ├─┬ contextify@0.1.6
│   │ └── bindings@1.1.1
│   ├── cssom@0.2.5
│   ├── cssstyle@0.2.3
│   ├── htmlparser@1.7.6
│   ├── nwmatcher@1.3.1
│   └─┬ request@2.27.0
│     ├── aws-sign@0.3.0
│     ├── cookie-jar@0.3.0
│     ├── forever-agent@0.5.0
│     ├─┬ form-data@0.1.2
│     │ ├── async@0.2.9
│     │ └─┬ combined-stream@0.0.4
│     │   └── delayed-stream@0.0.5
│     ├─┬ hawk@1.0.0
│     │ ├── boom@0.4.2
│     │ ├── cryptiles@0.2.2
│     │ ├── hoek@0.9.1
│     │ └── sntp@0.2.4
│     ├─┬ http-signature@0.10.0
│     │ ├── asn1@0.1.11
│     │ ├── assert-plus@0.1.2
│     │ └── ctype@0.5.2
│     ├── json-stringify-safe@5.0.0
│     ├── mime@1.2.11
│     ├── node-uuid@1.4.1
│     ├── oauth-sign@0.3.0
│     ├── qs@0.6.5
│     └── tunnel-agent@0.3.0
├── grunt-ember-templates@0.4.15
├─┬ grunt-es6-module-transpiler@0.4.1
│ └─┬ es6-module-transpiler@0.2.0
│   ├── coffee-script@1.3.3
│   └─┬ optimist@0.3.7
│     └── wordwrap@0.0.2
├─┬ grunt-karma@0.5.4
│ └─┬ optimist@0.6.0
│   ├── minimist@0.0.5
│   └── wordwrap@0.0.2
├── grunt-rev@0.1.0
├─┬ grunt-sass@0.8.0
│ ├─┬ grunt-lib-contrib@0.6.1
│ │ └── zlib-browserify@0.0.1
│ └─┬ node-sass@0.7.0
│   ├── colors@0.6.0-1
│   ├── mkdirp@0.3.5
│   ├─┬ mocha@1.13.0
│   │ ├── commander@0.6.1
│   │ ├── debug@0.7.4
│   │ ├── diff@1.0.7
│   │ ├─┬ glob@3.2.3
│   │ │ ├── graceful-fs@2.0.1
│   │ │ ├── inherits@2.0.1
│   │ │ └─┬ minimatch@0.2.12
│   │ │   ├── lru-cache@2.5.0
│   │ │   └── sigmund@1.0.0
│   │ ├── growl@1.7.0
│   │ └─┬ jade@0.26.3
│   │   └── mkdirp@0.3.0
│   ├── node-watch@0.3.4
│   └─┬ optimist@0.6.0
│     ├── minimist@0.0.5
│     └── wordwrap@0.0.2
├── grunt-usemin@0.1.12
├─┬ http-proxy@0.10.3
│ ├── colors@0.6.2
│ ├─┬ optimist@0.3.7
│ │ └── wordwrap@0.0.2
│ ├── pkginfo@0.2.3
│ └─┬ utile@0.1.7
│   ├── async@0.1.22
│   ├── deep-equal@0.1.0
│   ├── i@0.3.2
│   ├── mkdirp@0.3.5
│   ├── ncp@0.2.7
│   └── rimraf@1.0.9
├─┬ karma@0.9.8
│ ├── chokidar@0.6.3
│ ├── coffee-script@1.6.3
│ ├── colors@0.6.0-1
│ ├─┬ connect@2.8.8
│ │ ├── buffer-crc32@0.2.1
│ │ ├── bytes@0.2.0
│ │ ├── cookie@0.1.0
│ │ ├── cookie-signature@1.0.1
│ │ ├── debug@0.7.2
│ │ ├── formidable@1.0.14
│ │ ├── fresh@0.2.0
│ │ ├── methods@0.0.1
│ │ ├── pause@0.0.1
│ │ ├── qs@0.6.5
│ │ ├─┬ send@0.1.4
│ │ │ └── range-parser@0.0.4
│ │ └── uid2@0.0.2
│ ├── di@0.0.1
│ ├─┬ glob@3.1.21
│ │ └── inherits@1.0.0
│ ├── graceful-fs@1.2.3
│ ├─┬ http-proxy@0.10.3
│ │ ├── pkginfo@0.2.3
│ │ └─┬ utile@0.1.7
│ │   ├── async@0.1.22
│ │   ├── deep-equal@0.0.0
│ │   ├── i@0.3.2
│ │   ├── mkdirp@0.3.5
│ │   ├── ncp@0.2.7
│ │   └── rimraf@1.0.9
│ ├── lodash@1.1.1
│ ├─┬ log4js@0.6.9
│ │ ├── async@0.1.15
│ │ ├── readable-stream@1.0.17
│ │ └── semver@1.1.4
│ ├── mime@1.2.11
│ ├─┬ minimatch@0.2.12
│ │ ├── lru-cache@2.3.1
│ │ └── sigmund@1.0.0
│ ├─┬ optimist@0.3.7
│ │ └── wordwrap@0.0.2
│ ├── q@0.9.7
│ ├── rimraf@2.1.4
│ ├─┬ socket.io@0.9.16
│ │ ├── base64id@0.1.0
│ │ ├── policyfile@0.0.4
│ │ ├── redis@0.7.3
│ │ └─┬ socket.io-client@0.9.16
│ │   ├─┬ active-x-obfuscator@0.0.1
│ │   │ └── zeparser@0.0.5
│ │   ├── uglify-js@1.2.5
│ │   ├─┬ ws@0.4.31
│ │   │ ├── commander@0.6.1
│ │   │ ├── nan@0.3.2
│ │   │ ├── options@0.0.5
│ │   │ └── tinycolor@0.0.1
│ │   └── xmlhttprequest@1.4.2
│ └─┬ useragent@2.0.7
│   └── lru-cache@2.2.4
├── karma-chrome-launcher@0.1.0
├─┬ karma-coffee-preprocessor@0.1.0
│ └── coffee-script@1.6.3
├─┬ karma-coverage@0.0.5
│ ├── dateformat@1.0.6-1.2.3
│ └─┬ istanbul@0.1.44
│   ├── abbrev@1.0.4
│   ├── async@0.2.9
│   ├─┬ escodegen@0.0.23
│   │ ├── estraverse@0.0.4
│   │ └─┬ source-map@0.1.30
│   │   └── amdefine@0.0.8
│   ├── esprima@1.0.4
│   ├─┬ fileset@0.1.5
│   │ └─┬ minimatch@0.2.12
│   │   ├── lru-cache@2.3.1
│   │   └── sigmund@1.0.0
│   ├─┬ handlebars@1.0.12
│   │ ├── optimist@0.3.7
│   │ └─┬ uglify-js@2.3.6
│   │   └─┬ source-map@0.1.30
│   │     └── amdefine@0.0.8
│   ├── mkdirp@0.3.5
│   ├── nopt@2.1.2
│   ├── resolve@0.5.1
│   ├── which@1.0.5
│   └── wordwrap@0.0.2
├── karma-firefox-launcher@0.1.0
├── karma-html2js-preprocessor@0.1.0
├── karma-jasmine@0.1.3
├─┬ karma-phantomjs-launcher@0.0.3
│ └─┬ phantomjs@1.9.2-2
│   ├── adm-zip@0.2.1
│   ├── kew@0.1.7
│   ├── mkdirp@0.3.5
│   ├── ncp@0.4.2
│   ├─┬ npmconf@0.0.24
│   │ ├─┬ config-chain@1.1.8
│   │ │ └── proto-list@1.2.2
│   │ ├── inherits@1.0.0
│   │ ├── ini@1.1.0
│   │ ├─┬ nopt@2.1.2
│   │ │ └── abbrev@1.0.4
│   │ ├── once@1.1.1
│   │ ├── osenv@0.0.3
│   │ └── semver@1.1.4
│   ├─┬ rimraf@2.0.3
│   │ └── graceful-fs@1.1.14
│   └── which@1.0.5
├── karma-qunit@0.0.3
├── karma-requirejs@0.1.0
├── karma-script-launcher@0.1.0
├─┬ load-grunt-config@0.5.0
│ └─┬ js-yaml@2.1.2
│   ├─┬ argparse@0.1.15
│   │ ├── underscore@1.4.4
│   │ └── underscore.string@2.3.3
│   └── esprima@1.0.4
├─┬ load-grunt-tasks@0.1.0
│ └─┬ minimatch@0.2.12
│   ├── lru-cache@2.3.1
│   └── sigmund@1.0.0
├── lockfile@0.3.4
├─┬ loom@2.0.0
│ ├─┬ cli-color@0.2.3
│ │ ├── es5-ext@0.9.2
│ │ └─┬ memoizee@0.2.6
│ │   ├── event-emitter@0.2.2
│ │   └── next-tick@0.1.0
│ ├── commander@2.0.0
│ ├─┬ fs-extra@0.6.4
│ │ ├── jsonfile@1.0.1
│ │ ├── mkdirp@0.3.5
│ │ ├── ncp@0.4.2
│ │ └─┬ rimraf@2.2.2
│ │   └── graceful-fs@2.0.1
│ ├─┬ loom-engine-hbs@1.0.0
│ │ └─┬ handlebars@1.0.12
│ │   ├─┬ optimist@0.3.7
│ │   │ └── wordwrap@0.0.2
│ │   └─┬ uglify-js@2.3.6
│ │     ├── async@0.2.9
│ │     └─┬ source-map@0.1.31
│ │       └── amdefine@0.1.0
│ └── sync-prompt@0.1.0
└─┬ loom-generators-ember@0.0.1
  └── fleck@0.5.1

@shama
Copy link
Member

shama commented Nov 22, 2013

@aexmachina Thanks! Try upgrading to the latest watch task, 0.5.3 and let me know if the error still occurs.

@simonexmachina
Copy link

Yep, that's got it. Thanks!

@simonexmachina
Copy link

Actually, no it hasn't :(

$ npm list
app-kit@0.0.0 /Users/simonwade/dev/Workspace/spotify-collection/client
├─┬ bower@1.2.7
│ ├── abbrev@1.0.4
│ ├── archy@0.0.2
│ ├─┬ bower-config@0.5.0
│ │ ├── mout@0.6.0
│ │ └─┬ optimist@0.6.0
│ │   ├── minimist@0.0.5
│ │   └── wordwrap@0.0.2
│ ├── bower-endpoint-parser@0.2.1
│ ├─┬ bower-json@0.4.0
│ │ ├── deep-extend@0.2.6
│ │ └── intersect@0.0.3
│ ├── bower-logger@0.2.1
│ ├─┬ bower-registry-client@0.1.5
│ │ ├── async@0.2.9
│ │ ├─┬ bower-config@0.4.5
│ │ │ ├── mout@0.6.0
│ │ │ └─┬ optimist@0.6.0
│ │ │   ├── minimist@0.0.5
│ │ │   └── wordwrap@0.0.2
│ │ └── request-replay@0.2.0
│ ├─┬ cardinal@0.4.2
│ │ ├── ansicolors@0.2.1
│ │ └─┬ redeyed@0.4.2
│ │   └── esprima@1.0.4
│ ├─┬ chalk@0.2.1
│ │ ├── ansi-styles@0.2.0
│ │ └── has-color@0.1.1
│ ├── chmodr@0.1.0
│ ├─┬ fstream@0.1.24
│ │ └── inherits@2.0.1
│ ├─┬ fstream-ignore@0.0.7
│ │ ├── inherits@2.0.1
│ │ └─┬ minimatch@0.2.12
│ │   └── sigmund@1.0.0
│ ├── graceful-fs@2.0.1
│ ├─┬ handlebars@1.0.12
│ │ ├─┬ optimist@0.3.7
│ │ │ └── wordwrap@0.0.2
│ │ └─┬ uglify-js@2.3.6
│ │   ├── async@0.2.9
│ │   └─┬ source-map@0.1.30
│ │     └── amdefine@0.0.8
│ ├─┬ inquirer@0.3.4
│ │ ├── async@0.2.9
│ │ ├─┬ cli-color@0.2.3
│ │ │ ├── es5-ext@0.9.2
│ │ │ └─┬ memoizee@0.2.6
│ │ │   ├── event-emitter@0.2.2
│ │ │   └── next-tick@0.1.0
│ │ ├── lodash@1.2.1
│ │ └── mute-stream@0.0.3
│ ├── junk@0.2.1
│ ├── lru-cache@2.3.1
│ ├── mkdirp@0.3.5
│ ├── mout@0.7.1
│ ├── nopt@2.1.2
│ ├── open@0.0.4
│ ├── osenv@0.0.3
│ ├─┬ promptly@0.2.0
│ │ └─┬ read@1.0.5
│ │   └── mute-stream@0.0.4
│ ├── q@0.9.7
│ ├─┬ request@2.27.0
│ │ ├── aws-sign@0.3.0
│ │ ├── cookie-jar@0.3.0
│ │ ├── forever-agent@0.5.0
│ │ ├─┬ form-data@0.1.2
│ │ │ ├── async@0.2.9
│ │ │ └─┬ combined-stream@0.0.4
│ │ │   └── delayed-stream@0.0.5
│ │ ├─┬ hawk@1.0.0
│ │ │ ├── boom@0.4.2
│ │ │ ├── cryptiles@0.2.2
│ │ │ ├── hoek@0.9.1
│ │ │ └── sntp@0.2.4
│ │ ├─┬ http-signature@0.10.0
│ │ │ ├── asn1@0.1.11
│ │ │ ├── assert-plus@0.1.2
│ │ │ └── ctype@0.5.2
│ │ ├── json-stringify-safe@5.0.0
│ │ ├── mime@1.2.11
│ │ ├── node-uuid@1.4.1
│ │ ├── oauth-sign@0.3.0
│ │ ├── qs@0.6.5
│ │ └── tunnel-agent@0.3.0
│ ├─┬ request-progress@0.3.1
│ │ └── throttleit@0.0.2
│ ├── retry@0.6.0
│ ├── rimraf@2.2.2
│ ├── semver@2.1.0
│ ├── stringify-object@0.1.7
│ ├─┬ sudo-block@0.2.1
│ │ └─┬ chalk@0.1.1
│ │   ├── ansi-styles@0.1.2
│ │   └── has-color@0.1.1
│ ├─┬ tar@0.1.18
│ │ ├── block-stream@0.0.7
│ │ └── inherits@2.0.1
│ ├── tmp@0.0.21
│ ├─┬ unzip@0.1.9
│ │ ├─┬ binary@0.3.0
│ │ │ ├── buffers@0.1.1
│ │ │ └─┬ chainsaw@0.1.0
│ │ │   └── traverse@0.3.9
│ │ ├─┬ match-stream@0.0.2
│ │ │ └── buffers@0.1.1
│ │ ├─┬ pullstream@0.4.0
│ │ │ ├── over@0.0.5
│ │ │ └── slice-stream@0.0.0
│ │ ├── readable-stream@1.0.17
│ │ └── setimmediate@1.0.1
│ ├─┬ update-notifier@0.1.6
│ │ ├─┬ chalk@0.1.1
│ │ │ ├── ansi-styles@0.1.2
│ │ │ └── has-color@0.1.1
│ │ ├─┬ configstore@0.1.5
│ │ │ ├─┬ js-yaml@2.1.2
│ │ │ │ ├─┬ argparse@0.1.15
│ │ │ │ │ ├── underscore@1.4.4
│ │ │ │ │ └── underscore.string@2.3.3
│ │ │ │ └── esprima@1.0.4
│ │ │ └── lodash@1.3.1
│ │ ├─┬ request@2.22.0
│ │ │ ├── aws-sign@0.3.0
│ │ │ ├── cookie-jar@0.3.0
│ │ │ ├── forever-agent@0.5.0
│ │ │ ├─┬ form-data@0.0.8
│ │ │ │ ├── async@0.2.9
│ │ │ │ └─┬ combined-stream@0.0.4
│ │ │ │   └── delayed-stream@0.0.5
│ │ │ ├─┬ hawk@0.13.1
│ │ │ │ ├─┬ boom@0.4.2
│ │ │ │ │ └── hoek@0.9.1
│ │ │ │ ├── cryptiles@0.2.2
│ │ │ │ ├── hoek@0.8.5
│ │ │ │ └─┬ sntp@0.2.4
│ │ │ │   └── hoek@0.9.1
│ │ │ ├─┬ http-signature@0.10.0
│ │ │ │ ├── asn1@0.1.11
│ │ │ │ ├── assert-plus@0.1.2
│ │ │ │ └── ctype@0.5.2
│ │ │ ├── json-stringify-safe@4.0.0
│ │ │ ├── mime@1.2.11
│ │ │ ├── node-uuid@1.4.1
│ │ │ ├── oauth-sign@0.3.0
│ │ │ ├── qs@0.6.5
│ │ │ └── tunnel-agent@0.3.0
│ │ └── semver@2.0.11
│ └── which@1.0.5
├── connect-livereload@0.3.0
├─┬ glob@3.2.6
│ ├── inherits@2.0.1
│ └─┬ minimatch@0.2.12
│   ├── lru-cache@2.3.1
│   └── sigmund@1.0.0
├─┬ grunt@0.4.1
│ ├── async@0.1.22
│ ├── coffee-script@1.3.3
│ ├── colors@0.6.2
│ ├── dateformat@1.0.2-1.2.3
│ ├── eventemitter2@0.4.13
│ ├─┬ findup-sync@0.1.2
│ │ └── lodash@1.0.1
│ ├─┬ glob@3.1.21
│ │ ├── graceful-fs@1.2.3
│ │ └── inherits@1.0.0
│ ├── hooker@0.2.3
│ ├── iconv-lite@0.2.11
│ ├─┬ js-yaml@2.0.5
│ │ ├─┬ argparse@0.1.15
│ │ │ ├── underscore@1.4.4
│ │ │ └── underscore.string@2.3.3
│ │ └── esprima@1.0.4
│ ├── lodash@0.9.2
│ ├─┬ minimatch@0.2.12
│ │ ├── lru-cache@2.3.1
│ │ └── sigmund@1.0.0
│ ├─┬ nopt@1.0.10
│ │ └── abbrev@1.0.4
│ ├─┬ rimraf@2.0.3
│ │ └── graceful-fs@1.1.14
│ ├── underscore.string@2.2.1
│ └── which@1.0.5
├─┬ grunt-concat-sourcemap@0.3.1
│ └─┬ source-map@0.1.30
│   └── amdefine@0.0.8
├─┬ grunt-concurrent@0.3.1
│ └── lpad@0.1.0
├── grunt-contrib-clean@0.4.1
├─┬ grunt-contrib-coffee@0.7.0
│ └── coffee-script@1.6.3
├── grunt-contrib-concat@0.3.0
├─┬ grunt-contrib-connect@0.3.0
│ └─┬ connect@2.7.11
│   ├── buffer-crc32@0.2.1
│   ├── bytes@0.2.0
│   ├── cookie@0.0.5
│   ├── cookie-signature@1.0.1
│   ├── debug@0.7.2
│   ├── formidable@1.0.14
│   ├── fresh@0.1.0
│   ├── pause@0.0.1
│   ├── qs@0.6.5
│   └─┬ send@0.1.1
│     ├── mime@1.2.11
│     └── range-parser@0.0.4
├── grunt-contrib-copy@0.4.1
├─┬ grunt-contrib-cssmin@0.6.2
│ ├─┬ clean-css@1.1.3
│ │ └── commander@2.0.0
│ └─┬ grunt-lib-contrib@0.6.1
│   └── zlib-browserify@0.0.1
├─┬ grunt-contrib-jshint@0.6.4
│ └─┬ jshint@2.1.11
│   ├── cli@0.4.5
│   ├── console-browserify@0.1.6
│   ├─┬ minimatch@0.2.12
│   │ ├── lru-cache@2.3.1
│   │ └── sigmund@1.0.0
│   ├── shelljs@0.1.4
│   └── underscore@1.4.4
├─┬ grunt-contrib-uglify@0.2.4
│ ├─┬ grunt-lib-contrib@0.6.1
│ │ └── zlib-browserify@0.0.1
│ └─┬ uglify-js@2.4.0
│   ├── async@0.2.9
│   ├─┬ optimist@0.3.7
│   │ └── wordwrap@0.0.2
│   ├─┬ source-map@0.1.30
│   │ └── amdefine@0.0.8
│   └── uglify-to-browserify@1.0.1
├─┬ grunt-contrib-watch@0.5.3
│ ├─┬ gaze@0.4.3
│ │ └─┬ globule@0.1.0
│ │   ├─┬ glob@3.1.21
│ │   │ ├── graceful-fs@1.2.3
│ │   │ └── inherits@1.0.0
│ │   ├── lodash@1.0.1
│ │   └─┬ minimatch@0.2.12
│ │     ├── lru-cache@2.5.0
│ │     └── sigmund@1.0.0
│ └─┬ tiny-lr@0.0.4
│   ├── debug@0.7.4
│   ├── faye-websocket@0.4.4
│   ├─┬ noptify@0.0.3
│   │ └─┬ nopt@2.0.0
│   │   └── abbrev@1.0.4
│   └── qs@0.5.6
├─┬ grunt-dom-munger@2.0.1
│ ├─┬ cheerio@0.12.3
│ │ ├─┬ cheerio-select@0.0.3
│ │ │ └─┬ CSSselect@0.3.11
│ │ │   ├── CSSwhat@0.4.1
│ │ │   └─┬ domutils@1.2.1
│ │ │     └── domelementtype@1.1.1
│ │ ├── entities@0.3.0
│ │ ├─┬ htmlparser2@3.1.4
│ │ │ ├── domelementtype@1.1.1
│ │ │ ├── domhandler@2.0.3
│ │ │ ├── domutils@1.1.6
│ │ │ └── readable-stream@1.0.17
│ │ └── underscore@1.4.4
│ └─┬ jsdom@0.5.7
│   ├─┬ contextify@0.1.6
│   │ └── bindings@1.1.1
│   ├── cssom@0.2.5
│   ├── cssstyle@0.2.3
│   ├── htmlparser@1.7.6
│   ├── nwmatcher@1.3.1
│   └─┬ request@2.27.0
│     ├── aws-sign@0.3.0
│     ├── cookie-jar@0.3.0
│     ├── forever-agent@0.5.0
│     ├─┬ form-data@0.1.2
│     │ ├── async@0.2.9
│     │ └─┬ combined-stream@0.0.4
│     │   └── delayed-stream@0.0.5
│     ├─┬ hawk@1.0.0
│     │ ├── boom@0.4.2
│     │ ├── cryptiles@0.2.2
│     │ ├── hoek@0.9.1
│     │ └── sntp@0.2.4
│     ├─┬ http-signature@0.10.0
│     │ ├── asn1@0.1.11
│     │ ├── assert-plus@0.1.2
│     │ └── ctype@0.5.2
│     ├── json-stringify-safe@5.0.0
│     ├── mime@1.2.11
│     ├── node-uuid@1.4.1
│     ├── oauth-sign@0.3.0
│     ├── qs@0.6.5
│     └── tunnel-agent@0.3.0
├── grunt-ember-templates@0.4.15
├─┬ grunt-es6-module-transpiler@0.4.1
│ └─┬ es6-module-transpiler@0.2.0
│   ├── coffee-script@1.3.3
│   └─┬ optimist@0.3.7
│     └── wordwrap@0.0.2
├─┬ grunt-karma@0.5.4
│ └─┬ optimist@0.6.0
│   ├── minimist@0.0.5
│   └── wordwrap@0.0.2
├── grunt-rev@0.1.0
├─┬ grunt-sass@0.8.0
│ ├─┬ grunt-lib-contrib@0.6.1
│ │ └── zlib-browserify@0.0.1
│ └─┬ node-sass@0.7.0
│   ├── colors@0.6.0-1
│   ├── mkdirp@0.3.5
│   ├─┬ mocha@1.13.0
│   │ ├── commander@0.6.1
│   │ ├── debug@0.7.4
│   │ ├── diff@1.0.7
│   │ ├─┬ glob@3.2.3
│   │ │ ├── graceful-fs@2.0.1
│   │ │ ├── inherits@2.0.1
│   │ │ └─┬ minimatch@0.2.12
│   │ │   ├── lru-cache@2.5.0
│   │ │   └── sigmund@1.0.0
│   │ ├── growl@1.7.0
│   │ └─┬ jade@0.26.3
│   │   └── mkdirp@0.3.0
│   ├── node-watch@0.3.4
│   └─┬ optimist@0.6.0
│     ├── minimist@0.0.5
│     └── wordwrap@0.0.2
├── grunt-usemin@0.1.12
├─┬ http-proxy@0.10.3
│ ├── colors@0.6.2
│ ├─┬ optimist@0.3.7
│ │ └── wordwrap@0.0.2
│ ├── pkginfo@0.2.3
│ └─┬ utile@0.1.7
│   ├── async@0.1.22
│   ├── deep-equal@0.1.0
│   ├── i@0.3.2
│   ├── mkdirp@0.3.5
│   ├── ncp@0.2.7
│   └── rimraf@1.0.9
├─┬ karma@0.9.8
│ ├── chokidar@0.6.3
│ ├── coffee-script@1.6.3
│ ├── colors@0.6.0-1
│ ├─┬ connect@2.8.8
│ │ ├── buffer-crc32@0.2.1
│ │ ├── bytes@0.2.0
│ │ ├── cookie@0.1.0
│ │ ├── cookie-signature@1.0.1
│ │ ├── debug@0.7.2
│ │ ├── formidable@1.0.14
│ │ ├── fresh@0.2.0
│ │ ├── methods@0.0.1
│ │ ├── pause@0.0.1
│ │ ├── qs@0.6.5
│ │ ├─┬ send@0.1.4
│ │ │ └── range-parser@0.0.4
│ │ └── uid2@0.0.2
│ ├── di@0.0.1
│ ├─┬ glob@3.1.21
│ │ └── inherits@1.0.0
│ ├── graceful-fs@1.2.3
│ ├─┬ http-proxy@0.10.3
│ │ ├── pkginfo@0.2.3
│ │ └─┬ utile@0.1.7
│ │   ├── async@0.1.22
│ │   ├── deep-equal@0.0.0
│ │   ├── i@0.3.2
│ │   ├── mkdirp@0.3.5
│ │   ├── ncp@0.2.7
│ │   └── rimraf@1.0.9
│ ├── lodash@1.1.1
│ ├─┬ log4js@0.6.9
│ │ ├── async@0.1.15
│ │ ├── readable-stream@1.0.17
│ │ └── semver@1.1.4
│ ├── mime@1.2.11
│ ├─┬ minimatch@0.2.12
│ │ ├── lru-cache@2.3.1
│ │ └── sigmund@1.0.0
│ ├─┬ optimist@0.3.7
│ │ └── wordwrap@0.0.2
│ ├── q@0.9.7
│ ├── rimraf@2.1.4
│ ├─┬ socket.io@0.9.16
│ │ ├── base64id@0.1.0
│ │ ├── policyfile@0.0.4
│ │ ├── redis@0.7.3
│ │ └─┬ socket.io-client@0.9.16
│ │   ├─┬ active-x-obfuscator@0.0.1
│ │   │ └── zeparser@0.0.5
│ │   ├── uglify-js@1.2.5
│ │   ├─┬ ws@0.4.31
│ │   │ ├── commander@0.6.1
│ │   │ ├── nan@0.3.2
│ │   │ ├── options@0.0.5
│ │   │ └── tinycolor@0.0.1
│ │   └── xmlhttprequest@1.4.2
│ └─┬ useragent@2.0.7
│   └── lru-cache@2.2.4
├── karma-chrome-launcher@0.1.0
├─┬ karma-coffee-preprocessor@0.1.0
│ └── coffee-script@1.6.3
├─┬ karma-coverage@0.0.5
│ ├── dateformat@1.0.6-1.2.3
│ └─┬ istanbul@0.1.44
│   ├── abbrev@1.0.4
│   ├── async@0.2.9
│   ├─┬ escodegen@0.0.23
│   │ ├── estraverse@0.0.4
│   │ └─┬ source-map@0.1.30
│   │   └── amdefine@0.0.8
│   ├── esprima@1.0.4
│   ├─┬ fileset@0.1.5
│   │ └─┬ minimatch@0.2.12
│   │   ├── lru-cache@2.3.1
│   │   └── sigmund@1.0.0
│   ├─┬ handlebars@1.0.12
│   │ ├── optimist@0.3.7
│   │ └─┬ uglify-js@2.3.6
│   │   └─┬ source-map@0.1.30
│   │     └── amdefine@0.0.8
│   ├── mkdirp@0.3.5
│   ├── nopt@2.1.2
│   ├── resolve@0.5.1
│   ├── which@1.0.5
│   └── wordwrap@0.0.2
├── karma-firefox-launcher@0.1.0
├── karma-html2js-preprocessor@0.1.0
├── karma-jasmine@0.1.3
├─┬ karma-phantomjs-launcher@0.0.3
│ └─┬ phantomjs@1.9.2-2
│   ├── adm-zip@0.2.1
│   ├── kew@0.1.7
│   ├── mkdirp@0.3.5
│   ├── ncp@0.4.2
│   ├─┬ npmconf@0.0.24
│   │ ├─┬ config-chain@1.1.8
│   │ │ └── proto-list@1.2.2
│   │ ├── inherits@1.0.0
│   │ ├── ini@1.1.0
│   │ ├─┬ nopt@2.1.2
│   │ │ └── abbrev@1.0.4
│   │ ├── once@1.1.1
│   │ ├── osenv@0.0.3
│   │ └── semver@1.1.4
│   ├─┬ rimraf@2.0.3
│   │ └── graceful-fs@1.1.14
│   └── which@1.0.5
├── karma-qunit@0.0.3
├── karma-requirejs@0.1.0
├── karma-script-launcher@0.1.0
├─┬ load-grunt-config@0.5.0
│ └─┬ js-yaml@2.1.2
│   ├─┬ argparse@0.1.15
│   │ ├── underscore@1.4.4
│   │ └── underscore.string@2.3.3
│   └── esprima@1.0.4
├─┬ load-grunt-tasks@0.1.0
│ └─┬ minimatch@0.2.12
│   ├── lru-cache@2.3.1
│   └── sigmund@1.0.0
├── lockfile@0.3.4
├─┬ loom@2.0.0
│ ├─┬ cli-color@0.2.3
│ │ ├── es5-ext@0.9.2
│ │ └─┬ memoizee@0.2.6
│ │   ├── event-emitter@0.2.2
│ │   └── next-tick@0.1.0
│ ├── commander@2.0.0
│ ├─┬ fs-extra@0.6.4
│ │ ├── jsonfile@1.0.1
│ │ ├── mkdirp@0.3.5
│ │ ├── ncp@0.4.2
│ │ └─┬ rimraf@2.2.2
│ │   └── graceful-fs@2.0.1
│ ├─┬ loom-engine-hbs@1.0.0
│ │ └─┬ handlebars@1.0.12
│ │   ├─┬ optimist@0.3.7
│ │   │ └── wordwrap@0.0.2
│ │   └─┬ uglify-js@2.3.6
│ │     ├── async@0.2.9
│ │     └─┬ source-map@0.1.31
│ │       └── amdefine@0.1.0
│ └── sync-prompt@0.1.0
└─┬ loom-generators-ember@0.0.1
  └── fleck@0.5.1

@simonexmachina
Copy link

It looks like the problem is caused by the number of files, if I reduce the set of file/directories to be watched then the problem goes away. So I can work around it, but I think it'd be good to have a better error message when this happens.

@fwielstra
Copy link

I had the same issue, I caused (and fixed) it by making a small adjustment in the files to be watched:

'<%= yeoman.app %>/{,**/}*.html'

changed to:

'<%= yeoman.app %>/{,*/}*.html',

To debug this though, is there any way to inspect what files are matched by patterns set in the watch task?

@shama
Copy link
Member

shama commented Dec 16, 2013

grunt watch --verbose should list all of the files it is watching.

Just curious, why do people do {,*/}*.html instead of just **/*.html? The curly braces seem unnecessary in that pattern.

@granteagon
Copy link

@fwielstra
you can check files matched with this:

module.exports = function(grunt) {
  grunt.initConfig({
    matchtest: {
      /* change the content of this pattern to test your variables */
      src: '<%= matchPatternToTest %>'
    },
  });
  // Match Pattern Testing
  // ----------------------------
  // This is a handy little function for testing your match patterns.  When you use variables for
  // configuring tasks, it's sometimes useful to see output of what variables your directives sees.
  //  This task lets you do that.  Simply call `grunt matchtest` from the command line.
  grunt.registerMultiTask('matchtest', function() {
    console.log(this.filesSrc);
  });
};

@feitla
Copy link

feitla commented Aug 25, 2014

Same issue. Any suggestions?

├── ejs@0.8.8
├─┬ grunt@0.4.2
│ ├── async@0.1.22
│ ├── coffee-script@1.3.3
│ ├── colors@0.6.2
│ ├── dateformat@1.0.2-1.2.3
│ ├── eventemitter2@0.4.14
│ ├── exit@0.1.2
│ ├─┬ findup-sync@0.1.3
│ │ ├─┬ glob@3.2.11
│ │ │ ├── inherits@2.0.1
│ │ │ └─┬ minimatch@0.3.0
│ │ │   ├── lru-cache@2.5.0
│ │ │   └── sigmund@1.0.0
│ │ └── lodash@2.4.1
│ ├── getobject@0.1.0
│ ├─┬ glob@3.1.21
│ │ ├── graceful-fs@1.2.3
│ │ └── inherits@1.0.0
│ ├── hooker@0.2.3
│ ├── iconv-lite@0.2.11
│ ├─┬ js-yaml@2.0.5
│ │ ├─┬ argparse@0.1.15
│ │ │ ├── underscore@1.4.4
│ │ │ └── underscore.string@2.3.3
│ │ └── esprima@1.0.4
│ ├── lodash@0.9.2
│ ├─┬ minimatch@0.2.14
│ │ ├── lru-cache@2.5.0
│ │ └── sigmund@1.0.0
│ ├─┬ nopt@1.0.10
│ │ └── abbrev@1.0.5
│ ├─┬ rimraf@2.0.3
│ │ └── graceful-fs@1.1.14
│ ├── underscore.string@2.2.1
│ └── which@1.0.5
├─┬ grunt-contrib-clean@0.5.0
│ └── rimraf@2.2.8
├─┬ grunt-contrib-coffee@0.10.1
│ ├─┬ chalk@0.4.0
│ │ ├── ansi-styles@1.0.0
│ │ ├── has-color@0.1.7
│ │ └── strip-ansi@0.1.1
│ └─┬ coffee-script@1.7.1
│   └── mkdirp@0.3.5
├── grunt-contrib-concat@0.3.0
├── grunt-contrib-copy@0.5.0
├─┬ grunt-contrib-cssmin@0.9.0
│ ├─┬ chalk@0.4.0
│ │ ├── ansi-styles@1.0.0
│ │ ├── has-color@0.1.7
│ │ └── strip-ansi@0.1.1
│ ├─┬ clean-css@2.1.8
│ │ └── commander@2.1.0
│ └─┬ maxmin@0.1.0
│   ├─┬ gzip-size@0.1.1
│   │ ├─┬ concat-stream@1.4.6
│   │ │ ├── inherits@2.0.1
│   │ │ ├─┬ readable-stream@1.1.13
│   │ │ │ ├── core-util-is@1.0.1
│   │ │ │ ├── isarray@0.0.1
│   │ │ │ └── string_decoder@0.10.31
│   │ │ └── typedarray@0.0.6
│   │ └─┬ zlib-browserify@0.0.3
│   │   └─┬ tape@0.2.2
│   │     ├── deep-equal@0.0.0
│   │     ├── defined@0.0.0
│   │     └── jsonify@0.0.0
│   └── pretty-bytes@0.1.2
├─┬ grunt-contrib-jshint@0.10.0
│ ├── hooker@0.2.3
│ └─┬ jshint@2.5.5
│   ├─┬ cli@0.6.3
│   │ └─┬ glob@3.2.11
│   │   ├── inherits@2.0.1
│   │   └─┬ minimatch@0.3.0
│   │     ├── lru-cache@2.5.0
│   │     └── sigmund@1.0.0
│   ├─┬ console-browserify@1.1.0
│   │ └── date-now@0.1.4
│   ├── exit@0.1.2
│   ├─┬ htmlparser2@3.7.3
│   │ ├── domelementtype@1.1.1
│   │ ├── domhandler@2.2.0
│   │ ├── domutils@1.5.0
│   │ ├── entities@1.0.0
│   │ └─┬ readable-stream@1.1.13
│   │   ├── core-util-is@1.0.1
│   │   ├── inherits@2.0.1
│   │   ├── isarray@0.0.1
│   │   └── string_decoder@0.10.31
│   ├─┬ minimatch@0.4.0
│   │ ├── lru-cache@2.5.0
│   │ └── sigmund@1.0.0
│   ├── shelljs@0.3.0
│   ├── strip-json-comments@0.1.3
│   └── underscore@1.6.0
├─┬ grunt-contrib-jst@0.6.0
│ ├─┬ chalk@0.4.0
│ │ ├── ansi-styles@1.0.0
│ │ ├── has-color@0.1.7
│ │ └── strip-ansi@0.1.1
│ └─┬ grunt-lib-contrib@0.7.1
│   ├─┬ maxmin@0.1.0
│   │ ├─┬ gzip-size@0.1.1
│   │ │ ├─┬ concat-stream@1.4.6
│   │ │ │ ├── inherits@2.0.1
│   │ │ │ ├─┬ readable-stream@1.1.13
│   │ │ │ │ ├── core-util-is@1.0.1
│   │ │ │ │ ├── isarray@0.0.1
│   │ │ │ │ └── string_decoder@0.10.31
│   │ │ │ └── typedarray@0.0.6
│   │ │ └─┬ zlib-browserify@0.0.3
│   │ │   └─┬ tape@0.2.2
│   │ │     ├── deep-equal@0.0.0
│   │ │     ├── defined@0.0.0
│   │ │     └── jsonify@0.0.0
│   │ └── pretty-bytes@0.1.2
│   └── strip-path@0.1.1
├─┬ grunt-contrib-less@0.11.4
│ ├── async@0.2.10
│ ├─┬ chalk@0.5.1
│ │ ├── ansi-styles@1.1.0
│ │ ├── escape-string-regexp@1.0.1
│ │ ├─┬ has-ansi@0.1.0
│ │ │ └── ansi-regex@0.2.1
│ │ ├─┬ strip-ansi@0.3.0
│ │ │ └── ansi-regex@0.2.1
│ │ └── supports-color@0.2.0
│ ├─┬ less@1.7.4
│ │ ├─┬ clean-css@2.1.8
│ │ │ └── commander@2.1.0
│ │ ├── graceful-fs@2.0.3
│ │ ├── mime@1.2.11
│ │ ├── mkdirp@0.3.5
│ │ ├─┬ request@2.34.0
│ │ │ ├── aws-sign2@0.5.0
│ │ │ ├── forever-agent@0.5.2
│ │ │ ├─┬ form-data@0.1.4
│ │ │ │ ├── async@0.9.0
│ │ │ │ └─┬ combined-stream@0.0.5
│ │ │ │   └── delayed-stream@0.0.5
│ │ │ ├─┬ hawk@1.0.0
│ │ │ │ ├── boom@0.4.2
│ │ │ │ ├── cryptiles@0.2.2
│ │ │ │ ├── hoek@0.9.1
│ │ │ │ └── sntp@0.2.4
│ │ │ ├─┬ http-signature@0.10.0
│ │ │ │ ├── asn1@0.1.11
│ │ │ │ ├── assert-plus@0.1.2
│ │ │ │ └── ctype@0.5.2
│ │ │ ├── json-stringify-safe@5.0.0
│ │ │ ├── node-uuid@1.4.1
│ │ │ ├── oauth-sign@0.3.0
│ │ │ ├── qs@0.6.6
│ │ │ ├─┬ tough-cookie@0.12.1
│ │ │ │ └── punycode@1.3.1
│ │ │ └── tunnel-agent@0.3.0
│ │ └─┬ source-map@0.1.38
│ │   └── amdefine@0.1.0
│ └─┬ maxmin@0.1.0
│   ├─┬ chalk@0.4.0
│   │ ├── ansi-styles@1.0.0
│   │ ├── has-color@0.1.7
│   │ └── strip-ansi@0.1.1
│   ├─┬ gzip-size@0.1.1
│   │ ├─┬ concat-stream@1.4.6
│   │ │ ├── inherits@2.0.1
│   │ │ ├─┬ readable-stream@1.1.13
│   │ │ │ ├── core-util-is@1.0.1
│   │ │ │ ├── isarray@0.0.1
│   │ │ │ └── string_decoder@0.10.31
│   │ │ └── typedarray@0.0.6
│   │ └─┬ zlib-browserify@0.0.3
│   │   └─┬ tape@0.2.2
│   │     ├── deep-equal@0.0.0
│   │     ├── defined@0.0.0
│   │     └── jsonify@0.0.0
│   └── pretty-bytes@0.1.2
├─┬ grunt-contrib-uglify@0.4.1
│ ├─┬ chalk@0.4.0
│ │ ├── ansi-styles@1.0.0
│ │ ├── has-color@0.1.7
│ │ └── strip-ansi@0.1.1
│ ├─┬ maxmin@0.1.0
│ │ ├─┬ gzip-size@0.1.1
│ │ │ ├─┬ concat-stream@1.4.6
│ │ │ │ ├── inherits@2.0.1
│ │ │ │ ├─┬ readable-stream@1.1.13
│ │ │ │ │ ├── core-util-is@1.0.1
│ │ │ │ │ ├── isarray@0.0.1
│ │ │ │ │ └── string_decoder@0.10.31
│ │ │ │ └── typedarray@0.0.6
│ │ │ └─┬ zlib-browserify@0.0.3
│ │ │   └─┬ tape@0.2.2
│ │ │     ├── deep-equal@0.0.0
│ │ │     ├── defined@0.0.0
│ │ │     └── jsonify@0.0.0
│ │ └── pretty-bytes@0.1.2
│ └─┬ uglify-js@2.4.15
│   ├── async@0.2.10
│   ├─┬ optimist@0.3.7
│   │ └── wordwrap@0.0.2
│   ├─┬ source-map@0.1.34
│   │ └── amdefine@0.1.0
│   └── uglify-to-browserify@1.0.2
├─┬ grunt-contrib-watch@0.5.3
│ ├─┬ gaze@0.4.3
│ │ └─┬ globule@0.1.0
│ │   ├─┬ glob@3.1.21
│ │   │ ├── graceful-fs@1.2.3
│ │   │ └── inherits@1.0.0
│ │   ├── lodash@1.0.1
│ │   └─┬ minimatch@0.2.14
│ │     ├── lru-cache@2.5.0
│ │     └── sigmund@1.0.0
│ └─┬ tiny-lr@0.0.4
│   ├── debug@0.7.4
│   ├── faye-websocket@0.4.4
│   ├─┬ noptify@0.0.3
│   │ └─┬ nopt@2.0.0
│   │   └── abbrev@1.0.5
│   └── qs@0.5.6
├── grunt-karma@0.8.3
├── grunt-protractor-runner@1.1.4
├── grunt-sails-linker@0.9.5
├─┬ grunt-sync@0.0.8
│ └── promised-io@0.3.3
├── html2js@0.0.3
├─┬ include-all@0.1.6
│ └── underscore.string@2.3.1
├─┬ karma@0.12.22
│ ├─┬ chokidar@0.8.4
│ │ ├─┬ fsevents@0.2.1 (git://github.com/pipobscure/fsevents#7dcdf9fa3f8956610fd6f69f72c67bace2de7138)
│ │ │ └── nan@0.8.0
│ │ └── recursive-readdir@0.0.2
│ ├── colors@0.6.2
│ ├─┬ connect@2.12.0
│ │ ├── batch@0.5.0
│ │ ├── buffer-crc32@0.2.1
│ │ ├── bytes@0.2.1
│ │ ├── cookie@0.1.0
│ │ ├── cookie-signature@1.0.1
│ │ ├── debug@0.8.1
│ │ ├── fresh@0.2.0
│ │ ├── methods@0.1.0
│ │ ├─┬ multiparty@2.2.0
│ │ │ ├─┬ readable-stream@1.1.13
│ │ │ │ ├── core-util-is@1.0.1
│ │ │ │ ├── inherits@2.0.1
│ │ │ │ ├── isarray@0.0.1
│ │ │ │ └── string_decoder@0.10.31
│ │ │ └── stream-counter@0.2.0
│ │ ├── negotiator@0.3.0
│ │ ├── pause@0.0.1
│ │ ├── qs@0.6.6
│ │ ├── raw-body@1.1.2
│ │ ├─┬ send@0.1.4
│ │ │ └── range-parser@0.0.4
│ │ └── uid2@0.0.3
│ ├── di@0.0.1
│ ├─┬ glob@3.2.11
│ │ ├── inherits@2.0.1
│ │ └─┬ minimatch@0.3.0
│ │   ├── lru-cache@2.5.0
│ │   └── sigmund@1.0.0
│ ├── graceful-fs@2.0.3
│ ├─┬ http-proxy@0.10.4
│ │ ├── pkginfo@0.3.0
│ │ └─┬ utile@0.2.1
│ │   ├── async@0.2.10
│ │   ├── deep-equal@0.2.1
│ │   ├── i@0.3.2
│ │   ├─┬ mkdirp@0.5.0
│ │   │ └── minimist@0.0.8
│ │   └── ncp@0.4.2
│ ├─┬ log4js@0.6.19
│ │ ├── async@0.1.15
│ │ ├─┬ readable-stream@1.0.31
│ │ │ ├── core-util-is@1.0.1
│ │ │ ├── inherits@2.0.1
│ │ │ ├── isarray@0.0.1
│ │ │ └── string_decoder@0.10.31
│ │ └── semver@1.1.4
│ ├── mime@1.2.11
│ ├─┬ minimatch@0.2.14
│ │ ├── lru-cache@2.5.0
│ │ └── sigmund@1.0.0
│ ├─┬ optimist@0.6.1
│ │ ├── minimist@0.0.10
│ │ └── wordwrap@0.0.2
│ ├── q@0.9.7
│ ├── rimraf@2.2.8
│ ├─┬ socket.io@0.9.17
│ │ ├── base64id@0.1.0
│ │ ├── policyfile@0.0.4
│ │ ├── redis@0.7.3
│ │ └─┬ socket.io-client@0.9.16
│ │   ├─┬ active-x-obfuscator@0.0.1
│ │   │ └── zeparser@0.0.5
│ │   ├── uglify-js@1.2.5
│ │   ├─┬ ws@0.4.32
│ │   │ ├── commander@2.1.0
│ │   │ ├── nan@1.0.0
│ │   │ ├── options@0.0.5
│ │   │ └── tinycolor@0.0.1
│ │   └── xmlhttprequest@1.4.2
│ ├─┬ source-map@0.1.38
│ │ └── amdefine@0.1.0
│ └─┬ useragent@2.0.9
│   └── lru-cache@2.2.4
├── karma-chrome-launcher@0.1.4
├── karma-firefox-launcher@0.1.3
├── karma-ie-launcher@0.1.5
├── karma-jasmine@0.2.2
├─┬ karma-junit-reporter@0.2.2
│ └── xmlbuilder@0.4.2
├── karma-ng-html2js-preprocessor@0.1.0
├─┬ karma-phantomjs-launcher@0.1.4
│ └─┬ phantomjs@1.9.7-15
│   ├── adm-zip@0.2.1
│   ├── kew@0.1.7
│   ├── mkdirp@0.3.5
│   ├── ncp@0.4.2
│   ├─┬ npmconf@0.0.24
│   │ ├─┬ config-chain@1.1.8
│   │ │ └── proto-list@1.2.3
│   │ ├── inherits@1.0.0
│   │ ├── ini@1.1.0
│   │ ├─┬ nopt@2.2.1
│   │ │ └── abbrev@1.0.5
│   │ ├── once@1.1.1
│   │ ├── osenv@0.0.3
│   │ └── semver@1.1.4
│   ├── progress@1.1.8
│   ├─┬ request@2.36.0
│   │ ├── aws-sign2@0.5.0
│   │ ├── forever-agent@0.5.2
│   │ ├─┬ form-data@0.1.4
│   │ │ ├── async@0.9.0
│   │ │ └─┬ combined-stream@0.0.5
│   │ │   └── delayed-stream@0.0.5
│   │ ├─┬ hawk@1.0.0
│   │ │ ├── boom@0.4.2
│   │ │ ├── cryptiles@0.2.2
│   │ │ ├── hoek@0.9.1
│   │ │ └── sntp@0.2.4
│   │ ├─┬ http-signature@0.10.0
│   │ │ ├── asn1@0.1.11
│   │ │ ├── assert-plus@0.1.2
│   │ │ └── ctype@0.5.2
│   │ ├── json-stringify-safe@5.0.0
│   │ ├── mime@1.2.11
│   │ ├── node-uuid@1.4.1
│   │ ├── oauth-sign@0.3.0
│   │ ├── qs@0.6.6
│   │ ├─┬ tough-cookie@0.12.1
│   │ │ └── punycode@1.3.1
│   │ └── tunnel-agent@0.4.0
│   ├─┬ request-progress@0.3.1
│   │ └── throttleit@0.0.2
│   ├── rimraf@2.2.8
│   └── which@1.0.5
├── lodash@2.4.1
├── moment@2.8.2
├─┬ passport@0.2.0
│ ├── passport-strategy@1.0.0
│ └── pause@0.0.1
├─┬ passport-local@1.0.0
│ └── passport-strategy@1.0.0
├─┬ protractor@1.1.1
│ ├── adm-zip@0.4.4
│ ├─┬ glob@3.2.11
│ │ ├── inherits@2.0.1
│ │ └─┬ minimatch@0.3.0
│ │   ├── lru-cache@2.5.0
│ │   └── sigmund@1.0.0
│ ├── jasminewd@1.0.4
│ ├── minijasminenode@1.1.1
│ ├─┬ optimist@0.6.1
│ │ ├── minimist@0.0.10
│ │ └── wordwrap@0.0.2
│ ├── q@1.0.0
│ ├─┬ request@2.36.0
│ │ ├── aws-sign2@0.5.0
│ │ ├── forever-agent@0.5.2
│ │ ├─┬ form-data@0.1.4
│ │ │ ├── async@0.9.0
│ │ │ └─┬ combined-stream@0.0.5
│ │ │   └── delayed-stream@0.0.5
│ │ ├─┬ hawk@1.0.0
│ │ │ ├── boom@0.4.2
│ │ │ ├── cryptiles@0.2.2
│ │ │ ├── hoek@0.9.1
│ │ │ └── sntp@0.2.4
│ │ ├─┬ http-signature@0.10.0
│ │ │ ├── asn1@0.1.11
│ │ │ ├── assert-plus@0.1.2
│ │ │ └── ctype@0.5.2
│ │ ├── json-stringify-safe@5.0.0
│ │ ├── mime@1.2.11
│ │ ├── node-uuid@1.4.1
│ │ ├── oauth-sign@0.3.0
│ │ ├── qs@0.6.6
│ │ ├─┬ tough-cookie@0.12.1
│ │ │ └── punycode@1.3.1
│ │ └── tunnel-agent@0.4.0
│ ├── saucelabs@0.1.1
│ ├── selenium-webdriver@2.42.1
│ └─┬ source-map-support@0.2.7
│   └─┬ source-map@0.1.32
│     └── amdefine@0.1.0
├── q@1.0.1
├─┬ rc@0.5.0
│ ├── deep-extend@0.2.11
│ ├── ini@1.1.0
│ ├── minimist@0.0.10
│ └── strip-json-comments@0.1.3
├─┬ sails@0.10.4
│ ├─┬ anchor@0.10.0-rc2
│ │ └── validator@3.3.0
│ ├── async@0.2.10
│ ├─┬ captains-log@0.11.11
│ │ └─┬ rc@0.3.5
│ │   ├── deep-extend@0.2.11
│ │   ├── ini@1.1.0
│ │   └── minimist@0.0.10
│ ├── colors@0.6.2
│ ├── commander@2.1.0
│ ├── connect-flash@0.1.1
│ ├── ejs-locals@1.0.2
│ ├─┬ express@3.4.3
│ │ ├── buffer-crc32@0.2.1
│ │ ├─┬ commander@1.3.2
│ │ │ └── keypress@0.1.0
│ │ ├─┬ connect@2.10.1
│ │ │ ├── bytes@0.2.0
│ │ │ ├─┬ multiparty@2.2.0
│ │ │ │ ├─┬ readable-stream@1.1.13
│ │ │ │ │ ├── core-util-is@1.0.1
│ │ │ │ │ ├── inherits@2.0.1
│ │ │ │ │ ├── isarray@0.0.1
│ │ │ │ │ └── string_decoder@0.10.31
│ │ │ │ └── stream-counter@0.2.0
│ │ │ ├── negotiator@0.2.8
│ │ │ ├── pause@0.0.1
│ │ │ ├── qs@0.6.5
│ │ │ ├── raw-body@0.0.3
│ │ │ └── uid2@0.0.2
│ │ ├── cookie@0.1.0
│ │ ├── cookie-signature@1.0.1
│ │ ├─┬ debug@1.0.4
│ │ │ └── ms@0.6.2
│ │ ├── fresh@0.2.0
│ │ ├── methods@0.0.1
│ │ ├── mkdirp@0.3.5
│ │ ├── range-parser@0.0.4
│ │ └─┬ send@0.1.4
│ │   └── mime@1.2.11
│ ├─┬ express3-handlebars@0.5.2
│ │ └─┬ handlebars@1.3.0
│ │   ├─┬ optimist@0.3.7
│ │   │ └── wordwrap@0.0.2
│ │   └─┬ uglify-js@2.3.6
│ │     └─┬ source-map@0.1.38
│ │       └── amdefine@0.1.0
│ ├─┬ fs-extra@0.8.1
│ │ ├── jsonfile@1.1.1
│ │ ├── mkdirp@0.3.5
│ │ ├── ncp@0.4.2
│ │ └── rimraf@2.2.8
│ ├─┬ glob@3.2.11
│ │ ├── inherits@2.0.1
│ │ └─┬ minimatch@0.3.0
│ │   ├── lru-cache@2.5.0
│ │   └── sigmund@1.0.0
│ ├─┬ grunt-cli@0.1.13
│ │ ├── findup-sync@0.1.3
│ │ ├─┬ nopt@1.0.10
│ │ │ └── abbrev@1.0.5
│ │ └── resolve@0.3.1
│ ├─┬ grunt-contrib-less@0.11.1
│ │ ├─┬ chalk@0.4.0
│ │ │ ├── ansi-styles@1.0.0
│ │ │ ├── has-color@0.1.7
│ │ │ └── strip-ansi@0.1.1
│ │ ├─┬ less@1.7.4
│ │ │ ├── clean-css@2.1.8
│ │ │ ├── graceful-fs@2.0.3
│ │ │ ├── mime@1.2.11
│ │ │ ├── mkdirp@0.3.5
│ │ │ ├─┬ request@2.34.0
│ │ │ │ ├── aws-sign2@0.5.0
│ │ │ │ ├── forever-agent@0.5.2
│ │ │ │ ├─┬ form-data@0.1.4
│ │ │ │ │ ├── async@0.9.0
│ │ │ │ │ └─┬ combined-stream@0.0.5
│ │ │ │ │   └── delayed-stream@0.0.5
│ │ │ │ ├─┬ hawk@1.0.0
│ │ │ │ │ ├── boom@0.4.2
│ │ │ │ │ ├── cryptiles@0.2.2
│ │ │ │ │ ├── hoek@0.9.1
│ │ │ │ │ └── sntp@0.2.4
│ │ │ │ ├─┬ http-signature@0.10.0
│ │ │ │ │ ├── asn1@0.1.11
│ │ │ │ │ ├── assert-plus@0.1.2
│ │ │ │ │ └── ctype@0.5.2
│ │ │ │ ├── json-stringify-safe@5.0.0
│ │ │ │ ├── oauth-sign@0.3.0
│ │ │ │ ├── qs@0.6.6
│ │ │ │ ├─┬ tough-cookie@0.12.1
│ │ │ │ │ └── punycode@1.3.1
│ │ │ │ └── tunnel-agent@0.3.0
│ │ │ └─┬ source-map@0.1.38
│ │ │   └── amdefine@0.1.0
│ │ └─┬ maxmin@0.1.0
│ │   ├─┬ gzip-size@0.1.1
│ │   │ ├─┬ concat-stream@1.4.6
│ │   │ │ ├── inherits@2.0.1
│ │   │ │ ├─┬ readable-stream@1.1.13
│ │   │ │ │ ├── core-util-is@1.0.1
│ │   │ │ │ ├── isarray@0.0.1
│ │   │ │ │ └── string_decoder@0.10.31
│ │   │ │ └── typedarray@0.0.6
│ │   │ └─┬ zlib-browserify@0.0.3
│ │   │   └─┬ tape@0.2.2
│ │   │     ├── deep-equal@0.0.0
│ │   │     ├── defined@0.0.0
│ │   │     └── jsonify@0.0.0
│ │   └── pretty-bytes@0.1.2
│ ├─┬ i18n@0.5.0
│ │ ├─┬ debug@1.0.4
│ │ │ └── ms@0.6.2
│ │ ├── mustache@0.8.2
│ │ └── sprintf@0.1.4
│ ├── merge-defaults@0.1.4
│ ├── mock-req@0.1.0
│ ├── mock-res@0.1.0
│ ├── node-uuid@1.4.1
│ ├── pluralize@0.0.12
│ ├─┬ prompt@0.2.13
│ │ ├── pkginfo@0.3.0
│ │ ├─┬ read@1.0.5
│ │ │ └── mute-stream@0.0.4
│ │ ├── revalidator@0.1.8
│ │ ├─┬ utile@0.2.1
│ │ │ ├── deep-equal@0.2.1
│ │ │ ├── i@0.3.2
│ │ │ ├─┬ mkdirp@0.5.0
│ │ │ │ └── minimist@0.0.8
│ │ │ ├── ncp@0.4.2
│ │ │ └── rimraf@2.2.8
│ │ └─┬ winston@0.6.2
│ │   ├── async@0.1.22
│ │   ├── cycle@1.0.3
│ │   ├── eyes@0.1.8
│ │   ├── pkginfo@0.2.3
│ │   ├── request@2.9.203
│ │   └── stack-trace@0.0.9
│ ├─┬ reportback@0.1.8
│ │ └── node-switchback@0.0.4
│ ├── sails-build-dictionary@0.10.1
│ ├─┬ sails-disk@0.10.3
│ │ ├── waterline-criteria@0.10.7
│ │ ├─┬ waterline-cursor@0.0.5
│ │ │ └── async@0.9.0
│ │ └── waterline-errors@0.10.0-rc1
│ ├─┬ sails-generate@0.11.2
│ │ ├── sails-generate-adapter@0.10.4
│ │ ├── sails-generate-backend@0.11.3
│ │ ├─┬ sails-generate-controller@0.10.7
│ │ │ ├── pluralize@0.0.9
│ │ │ └── underscore.string@2.3.3
│ │ ├── sails-generate-frontend@0.10.20
│ │ ├── sails-generate-generator@0.10.11
│ │ ├── sails-generate-gruntfile@0.10.10
│ │ ├─┬ sails-generate-model@0.10.9
│ │ │ └── underscore.string@2.3.3
│ │ ├── sails-generate-new@0.10.17
│ │ ├── sails-generate-views@0.10.3
│ │ └── sails-generate-views-jade@0.10.3
│ ├── sails-stringfile@0.3.2
│ ├─┬ sails-util@0.10.4
│ │ ├── json-stringify-safe@5.0.0
│ │ ├── node-switchback@0.0.2
│ │ ├─┬ optimist@0.6.1
│ │ │ ├── minimist@0.0.10
│ │ │ └── wordwrap@0.0.2
│ │ └── underscore.string@2.3.3
│ ├── semver@2.2.1
│ ├─┬ skipper@0.5.3
│ │ ├─┬ connect@2.25.7
│ │ │ ├── basic-auth-connect@1.0.0
│ │ │ ├─┬ body-parser@1.6.5
│ │ │ │ ├── iconv-lite@0.4.4
│ │ │ │ ├─┬ on-finished@2.1.0
│ │ │ │ │ └── ee-first@1.0.5
│ │ │ │ └── raw-body@1.3.0
│ │ │ ├── bytes@1.0.0
│ │ │ ├─┬ compression@1.0.11
│ │ │ │ ├─┬ accepts@1.0.7
│ │ │ │ │ ├── mime-types@1.0.2
│ │ │ │ │ └── negotiator@0.4.7
│ │ │ │ ├── compressible@1.1.1
│ │ │ │ └── vary@1.0.0
│ │ │ ├─┬ connect-timeout@1.2.2
│ │ │ │ └── ms@0.6.2
│ │ │ ├── cookie@0.1.2
│ │ │ ├── cookie-parser@1.3.2
│ │ │ ├── cookie-signature@1.0.4
│ │ │ ├─┬ csurf@1.4.1
│ │ │ │ └─┬ csrf@2.0.1
│ │ │ │   ├── base64-url@1.0.0
│ │ │ │   ├── rndm@1.0.0
│ │ │ │   ├── scmp@0.0.3
│ │ │ │   └─┬ uid-safe@1.0.1
│ │ │ │     └─┬ mz@1.0.1
│ │ │ │       └── native-or-bluebird@1.0.0
│ │ │ ├─┬ debug@1.0.4
│ │ │ │ └── ms@0.6.2
│ │ │ ├── depd@0.4.4
│ │ │ ├─┬ errorhandler@1.1.1
│ │ │ │ ├─┬ accepts@1.0.7
│ │ │ │ │ ├── mime-types@1.0.2
│ │ │ │ │ └── negotiator@0.4.7
│ │ │ │ └── escape-html@1.0.1
│ │ │ ├─┬ express-session@1.7.6
│ │ │ │ ├── buffer-crc32@0.2.3
│ │ │ │ ├─┬ uid-safe@1.0.1
│ │ │ │ │ ├── base64-url@1.0.0
│ │ │ │ │ └─┬ mz@1.0.1
│ │ │ │ │   └── native-or-bluebird@1.0.0
│ │ │ │ └── utils-merge@1.0.0
│ │ │ ├─┬ finalhandler@0.1.0
│ │ │ │ └── escape-html@1.0.1
│ │ │ ├── fresh@0.2.2
│ │ │ ├── media-typer@0.2.0
│ │ │ ├─┬ method-override@2.1.3
│ │ │ │ ├── methods@1.1.0
│ │ │ │ └── vary@1.0.0
│ │ │ ├─┬ morgan@1.2.3
│ │ │ │ ├── basic-auth@1.0.0
│ │ │ │ └─┬ on-finished@2.1.0
│ │ │ │   └── ee-first@1.0.5
│ │ │ ├─┬ multiparty@3.3.2
│ │ │ │ ├─┬ readable-stream@1.1.13
│ │ │ │ │ ├── core-util-is@1.0.1
│ │ │ │ │ ├── inherits@2.0.1
│ │ │ │ │ └── isarray@0.0.1
│ │ │ │ └── stream-counter@0.2.0
│ │ │ ├── on-headers@1.0.0
│ │ │ ├── parseurl@1.3.0
│ │ │ ├── pause@0.0.1
│ │ │ ├── qs@1.2.2
│ │ │ ├── response-time@2.0.1
│ │ │ ├── serve-favicon@2.0.1
│ │ │ ├─┬ serve-index@1.1.6
│ │ │ │ ├─┬ accepts@1.0.7
│ │ │ │ │ ├── mime-types@1.0.2
│ │ │ │ │ └── negotiator@0.4.7
│ │ │ │ └── batch@0.5.1
│ │ │ ├─┬ serve-static@1.5.3
│ │ │ │ ├── escape-html@1.0.1
│ │ │ │ ├─┬ send@0.8.3
│ │ │ │ │ ├── destroy@1.0.3
│ │ │ │ │ ├── mime@1.2.11
│ │ │ │ │ ├── ms@0.6.2
│ │ │ │ │ ├─┬ on-finished@2.1.0
│ │ │ │ │ │ └── ee-first@1.0.5
│ │ │ │ │ └── range-parser@1.0.0
│ │ │ │ └── utils-merge@1.0.0
│ │ │ ├─┬ type-is@1.3.2
│ │ │ │ └── mime-types@1.0.2
│ │ │ └── vhost@2.0.0
│ │ ├── dot-access@0.0.3
│ │ ├── guid@0.0.12
│ │ ├─┬ multiparty@3.2.10
│ │ │ ├─┬ readable-stream@1.1.13
│ │ │ │ ├── core-util-is@1.0.1
│ │ │ │ ├── inherits@2.0.1
│ │ │ │ └── isarray@0.0.1
│ │ │ └── stream-counter@0.2.0
│ │ ├── skipper-disk@0.5.3
│ │ └── string_decoder@0.10.31
│ ├─┬ socket.io@0.9.17
│ │ ├── base64id@0.1.0
│ │ ├── policyfile@0.0.4
│ │ ├── redis@0.7.3
│ │ └─┬ socket.io-client@0.9.16
│ │   ├─┬ active-x-obfuscator@0.0.1
│ │   │ └── zeparser@0.0.5
│ │   ├── uglify-js@1.2.5
│ │   ├─┬ ws@0.4.32
│ │   │ ├── nan@1.0.0
│ │   │ ├── options@0.0.5
│ │   │ └── tinycolor@0.0.1
│ │   └── xmlhttprequest@1.4.2
│ └─┬ waterline@0.10.8
│   ├── async@0.9.0
│   ├── deep-diff@0.1.7
│   ├── node-switchback@0.1.2
│   ├── waterline-criteria@0.10.7
│   └── waterline-schema@0.1.15
└─┬ sails-mysql@0.10.6
  ├── async@0.9.0
  ├─┬ mysql@2.3.2
  │ ├── bignumber.js@1.4.0
  │ ├─┬ readable-stream@1.1.13
  │ │ ├── core-util-is@1.0.1
  │ │ ├── inherits@2.0.1
  │ │ ├── isarray@0.0.1
  │ │ └── string_decoder@0.10.31
  │ └── require-all@0.0.8
  ├── waterline-cursor@0.0.5
  ├── waterline-errors@0.10.0-rc1
  └── waterline-sequel@0.0.16

@shama
Copy link
Member

shama commented Aug 25, 2014

@feitla Unfortunately the solution is just to watch less files until node v0.12 lands as the fix will not be back ported: nodejs/node-v0.x-archive#5463

@ggranum
Copy link

ggranum commented Jan 17, 2015

For future visitors from Google: check that you're not accidentally including bower or node_modules directories :~) Oops!

Just add "!**/node_modules/**/*" (or whatever) to the end of your watch globs array if you're not sure. There's also another comment in this list that details how to list all the watched files.

I ran into this using gulp with a watch. Commenting here because this is the first Google result for the error, and it's relevant.

@mattiloh
Copy link

Thanks @ggranum ! Works for me.

@gad2103
Copy link

gad2103 commented Jan 22, 2015

thanks everyone! this SMA!

@lufei999
Copy link

@ggranum thank you

@vink3d
Copy link

vink3d commented Feb 2, 2015

@ggranum thank you, this solve problems :)

@Anaphase
Copy link

Thanks @ggranum!

Dallas62 pushed a commit to Dallas62/sails-generate-frontend that referenced this issue Feb 25, 2015
If you use a custom adapter, grunt is watching inside `node_modules`.

Then... gruntjs/grunt-contrib-watch#75 happened
@EvanLovely
Copy link

Avoid watching items in the "bower_components" folder too.

[
  "!**/node_modules/**/*",
  "!**/bower_components/**/*"
]

@dclowd9901
Copy link

How can this possibly be closed? "Watch fewer files" is not a solution, nor is excluding node_modules folders. What if my org has a module that has a linked module where we develop our sass code?

@shama
Copy link
Member

shama commented Nov 25, 2015

@dclowd9901 We accept pull requests if you know a better solution.

@chetangautam
Copy link

@EvanLovely Where should I add these to avoid watching? Thanks!

@EvanLovely
Copy link

@chetangautam Add them anywhere you're declaring files to watch.

@chetangautam
Copy link

@EvanLovely Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests