gruntjs / grunt-contrib-watch

Run tasks whenever watched files change.
http://gruntjs.com/
MIT License
1.98k stars 356 forks source link

FSEventStreamStart: register_with_server: ERROR: f2d_register_rpc() #75

Closed jeremypeter closed 11 years ago

jeremypeter commented 11 years ago

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 commented 11 years ago

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 commented 11 years ago

I have the same issue.

jeremypeter commented 11 years ago

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 commented 11 years ago

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 commented 11 years ago

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 commented 11 years ago

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 commented 11 years ago

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:

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

shama commented 11 years ago

@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.

snostorm commented 11 years ago

@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 commented 11 years ago

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

shama commented 11 years ago

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 commented 11 years ago

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 commented 11 years ago

Opened an issue for this on joyent/node#5463

paolodm commented 11 years ago

When is the next planned tag?

kevindente commented 11 years ago

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 commented 11 years ago

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

shama commented 11 years ago

@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 commented 11 years ago

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

simonexmachina commented 11 years ago

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 commented 11 years ago

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

simonexmachina commented 11 years ago

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 commented 11 years ago

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

simonexmachina commented 11 years ago

Yep, that's got it. Thanks!

simonexmachina commented 11 years ago

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 commented 11 years ago

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 commented 10 years ago

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 commented 10 years ago

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 commented 10 years ago

@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 commented 10 years ago

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 commented 10 years ago

@feitla Unfortunately the solution is just to watch less files until node v0.12 lands as the fix will not be back ported: https://github.com/joyent/node/issues/5463

ggranum commented 9 years ago

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 commented 9 years ago

Thanks @ggranum ! Works for me.

gad2103 commented 9 years ago

thanks everyone! this SMA!

lufei999 commented 9 years ago

@ggranum thank you

vink3d commented 9 years ago

@ggranum thank you, this solve problems :)

Anaphase commented 9 years ago

Thanks @ggranum!

EvanLovely commented 9 years ago

Avoid watching items in the "bower_components" folder too.

[
  "!**/node_modules/**/*",
  "!**/bower_components/**/*"
]
dclowd9901 commented 9 years ago

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 commented 9 years ago

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

chetangautam commented 8 years ago

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

EvanLovely commented 8 years ago

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

chetangautam commented 8 years ago

@EvanLovely Thanks!