[GH-ISSUE #483] Upgrade from 3.3.0 to 3.3.1 failed on 'cross-env NODE_ENV=production && gulp --production' #343

Closed
opened 2026-02-26 02:32:54 +03:00 by kerem · 4 comments
Owner

Originally created by @ShenZhouHong on GitHub (Nov 21, 2016).
Original GitHub issue: https://github.com/koel/koel/issues/483

Hey, thanks for contributing to Koel! To save time for both of us, please make sure these checkboxes are checked before submitting the issue:

  • You have read and followed closely the Wiki, Upgrade Guide, as well as Troubleshooting
  • The issue has not been reported before
  • This is not a "how to install on Windows" or "why is my npm messed up" question
  • You're a cool person

All checked? Now also make sure your issue

  • Is associated with a version. Or better yet, a commit.
  • Is as detailed as possible (ahem... OS, browser, steps to reproduce, maybe?)
  • Includes the error output if it's a bug/error report ("Whoops!" is not very helpful, you know)
  • Is in English, 因为我不说中文。

System Information

  • Ubuntu 14.04.5 LTS (GNU/Linux 4.4.0-31-generic x86_64)
  • npm --version results in 3.10.8
  • nginx -v results in nginx version: nginx/1.10.1

Problem Description

When attempting to upgrade from koel version 3.3.0 to 3.3.1, the following fails on my system:

stream.js:74
      throw er; // Unhandled stream error in pipe.
      ^

Error: EPERM: operation not permitted, chmod '/var/www/hong.io/koel/public/css/app.css'
    at Error (native)

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/gulp-watch/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm ERR! Linux 4.4.0-31-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install"
npm ERR! node v6.9.1
npm ERR! npm  v3.10.8
npm ERR! code ELIFECYCLE
npm ERR! koel@ postinstall: `cross-env NODE_ENV=production && gulp --production`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the koel@ postinstall script 'cross-env NODE_ENV=production && gulp --production'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the koel package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     cross-env NODE_ENV=production && gulp --production
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs koel
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls koel
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /var/www/hong.io/koel/npm-debug.log

Expected Behavior

Koel to update successfully

Current Behavior

Koel fails to update

Additional Information

Terminal output at npm install

shen@pattensen:/var/www/hong.io/koel$ npm install
npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated minimatch@0.2.14: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated graceful-fs@1.2.3: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
npm WARN deprecated tough-cookie@2.2.2: ReDoS vulnerability parsing Set-Cookie https://nodesecurity.io/advisories/130
npm WARN deprecated node-uuid@1.4.7: use uuid module instead
npm WARN deprecated minimatch@1.0.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated to-iso-string@0.0.2: to-iso-string has been deprecated, use @segment/to-iso-string instead.
npm WARN deprecated jade@0.26.3: Jade has been renamed to pug, please install the latest version of pug instead of jade
npm WARN deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN prefer global coffee-script@1.11.1 should be installed with -g
npm WARN prefer global marked@0.3.6 should be installed with -g
npm WARN prefer global node-gyp@3.4.0 should be installed with -g

> node-sass@3.13.0 install /var/www/hong.io/koel/node_modules/node-sass
> node scripts/install.js

Downloading binary from https://github.com/sass/node-sass/releases/download/v3.13.0/linux-x64-48_binding.node
Download complete  ] - :
Binary saved to /var/www/hong.io/koel/node_modules/node-sass/vendor/linux-x64-48/binding.node
Caching binary to /home/shen/.npm/node-sass/3.13.0/linux-x64-48_binding.node

> node-sass@3.13.0 postinstall /var/www/hong.io/koel/node_modules/node-sass
> node scripts/build.js

Binary found at /var/www/hong.io/koel/node_modules/node-sass/vendor/linux-x64-48/binding.node
Testing binary
Binary is fine

> koel@ postinstall /var/www/hong.io/koel
> cross-env NODE_ENV=production && gulp --production

[12:08:12] Using gulpfile /var/www/hong.io/koel/gulpfile.js
[12:08:12] Starting 'default'...
[12:08:12] Starting 'browserify'...

Fetching Browserify Source Files...
   - resources/assets/js/main.js


Saving To...
   - public/js/main.js

[12:08:13] Finished 'default' after 1000 ms
[12:08:39] gulp-notify: [Laravel Elixir] Browserify Compiled!
[12:08:40] Finished 'browserify' after 28 s
[12:08:40] Starting 'sass'...

Fetching Sass Source Files...
   - resources/assets/sass/app.scss


Saving To...
   - public/css/app.css

stream.js:74
      throw er; // Unhandled stream error in pipe.
      ^

Error: EPERM: operation not permitted, chmod '/var/www/hong.io/koel/public/css/app.css'
    at Error (native)

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/gulp-watch/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm ERR! Linux 4.4.0-31-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install"
npm ERR! node v6.9.1
npm ERR! npm  v3.10.8
npm ERR! code ELIFECYCLE
npm ERR! koel@ postinstall: `cross-env NODE_ENV=production && gulp --production`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the koel@ postinstall script 'cross-env NODE_ENV=production && gulp --production'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the koel package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     cross-env NODE_ENV=production && gulp --production
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs koel
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls koel
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /var/www/hong.io/koel/npm-debug.log

Filesystem permissions (ls -al)

total 1232
drwxrwx---  14 www-data www-data   4096 Nov 21 12:08 .
drwxr-xr-x   8 shen     www-data   4096 Sep 27 04:53 ..
-rwxrwx---   1 www-data www-data     53 Sep 27 04:06 .babelrc
-rwxrwx---   1 www-data www-data    106 Sep 27 04:06 .editorconfig
-rwxrwx---   1 www-data www-data   2778 Sep 27 06:42 .env
-rwxrwx---   1 www-data www-data   2541 Sep 27 04:06 .env.example
drwxrwx---   8 www-data www-data   4096 Nov 21 12:05 .git
-rwxrwx---   1 www-data www-data     61 Sep 27 04:06 .gitattributes
-rwxrwx---   1 www-data www-data    975 Sep 27 04:05 .gitignore
-rwxrwx---   1 www-data www-data   3957 Sep 27 04:06 .htaccess
-rwxrwx---   1 www-data www-data     92 Sep 27 04:06 .jshintrc
-rwxrwx---   1 www-data www-data  46072 Sep 27 04:05 .phpstorm.meta.php
-rwxrwx---   1 www-data www-data    562 Sep 27 04:06 .travis.yml
drwxrwx---   2 www-data www-data   4096 Sep 27 06:13 .well-known
-rwxrwx---   1 www-data www-data    867 Sep 27 04:06 ISSUE_TEMPLATE.md
-rwxrwx---   1 www-data www-data   1074 Sep 27 04:06 LICENSE.md
-rwxrwx---   1 www-data www-data  10191 Sep 27 04:06 README.md
drwxrwx---  15 www-data www-data   4096 Sep 27 04:05 app
-rwxrwx---   1 www-data www-data   1646 Sep 27 04:06 artisan
drwxrwx---   3 www-data www-data   4096 Sep 27 04:05 bootstrap
-rwxrwx---   1 www-data www-data   1678 Sep 27 04:05 composer.json
-rwxrwx---   1 www-data www-data 146441 Sep 27 04:45 composer.lock
drwxrwx---   2 www-data www-data   4096 Sep 27 04:05 config
drwxrwx---   5 www-data www-data   4096 Sep 27 04:05 database
-rwxrwx---   1 www-data www-data   1572 Sep 27 04:05 gulpfile.js
-rwxrwx---   1 www-data www-data   1760 Sep 27 04:06 index.php
-rw-rw-r--   1 www-data www-data     68 Nov  1 04:05 info.php
-rwxrwx---   1 www-data www-data   1283 Sep 27 04:05 nginx.conf.example
drwxrwxr-x 885 shen     shen      36864 Nov 21 12:08 node_modules
-rw-rw-r--   1 shen     shen     869633 Nov 21 12:08 npm-debug.log
-rwxrwx---   1 www-data www-data   1614 Sep 27 04:05 package.json
-rwxrwx---   1 www-data www-data     87 Sep 27 04:05 phpspec.yml
-rwxrwx---   1 www-data www-data   1072 Sep 27 04:06 phpunit.xml
drwxrwx---   6 www-data www-data   4096 Sep 27 04:06 public
drwxrwx---   5 www-data www-data   4096 Sep 27 04:05 resources
-rwxrwx---   1 www-data www-data     24 Sep 27 04:05 robots.txt
-rwxrwx---   1 www-data www-data    529 Sep 27 04:06 server.php
drwxrwx---   5 www-data www-data   4096 Sep 27 04:05 storage
drwxrwx---   5 www-data www-data   4096 Sep 27 04:06 tests
drwxrwx---  36 www-data www-data   4096 Sep 27 04:45 vendor
Originally created by @ShenZhouHong on GitHub (Nov 21, 2016). Original GitHub issue: https://github.com/koel/koel/issues/483 Hey, thanks for contributing to Koel! To save time for both of us, please make sure these checkboxes are checked before submitting the issue: - [x] You have read and followed closely the [Wiki](https://github.com/phanan/koel/wiki), [Upgrade Guide](https://github.com/phanan/koel/releases), as well as [Troubleshooting](https://github.com/phanan/koel/wiki/Troubleshooting) - [X] The issue has not been reported before - [X] This is not a "how to install on Windows" or "why is my npm messed up" question - [X] You're a cool person All checked? Now also make sure your issue - [X] Is associated with a version. Or better yet, a commit. - [X] Is as detailed as possible (ahem... OS, browser, steps to reproduce, maybe?) - [X] Includes the error output if it's a bug/error report ("Whoops!" is not very helpful, you know) - [X] Is in English, 因为我不说中文。 # System Information * Ubuntu 14.04.5 LTS (GNU/Linux 4.4.0-31-generic x86_64) * `npm --version` results in `3.10.8` * `nginx -v` results in `nginx version: nginx/1.10.1` # Problem Description When [attempting to upgrade](https://github.com/phanan/koel/releases/tag/v3.3.1) from koel version 3.3.0 to 3.3.1, the following fails on my system: ``` stream.js:74 throw er; // Unhandled stream error in pipe. ^ Error: EPERM: operation not permitted, chmod '/var/www/hong.io/koel/public/css/app.css' at Error (native) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/chokidar/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/gulp-watch/node_modules/chokidar/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm ERR! Linux 4.4.0-31-generic npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" npm ERR! node v6.9.1 npm ERR! npm v3.10.8 npm ERR! code ELIFECYCLE npm ERR! koel@ postinstall: `cross-env NODE_ENV=production && gulp --production` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the koel@ postinstall script 'cross-env NODE_ENV=production && gulp --production'. npm ERR! Make sure you have the latest version of node.js and npm installed. npm ERR! If you do, this is most likely a problem with the koel package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! cross-env NODE_ENV=production && gulp --production npm ERR! You can get information on how to open an issue for this project with: npm ERR! npm bugs koel npm ERR! Or if that isn't available, you can get their info via: npm ERR! npm owner ls koel npm ERR! There is likely additional logging output above. npm ERR! Please include the following file with any support request: npm ERR! /var/www/hong.io/koel/npm-debug.log ``` # Expected Behavior Koel to update successfully # Current Behavior Koel fails to update # Additional Information ## Terminal output at `npm install` ``` shen@pattensen:/var/www/hong.io/koel$ npm install npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue npm WARN deprecated minimatch@0.2.14: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue npm WARN deprecated graceful-fs@1.2.3: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree. npm WARN deprecated tough-cookie@2.2.2: ReDoS vulnerability parsing Set-Cookie https://nodesecurity.io/advisories/130 npm WARN deprecated node-uuid@1.4.7: use uuid module instead npm WARN deprecated minimatch@1.0.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue npm WARN deprecated to-iso-string@0.0.2: to-iso-string has been deprecated, use @segment/to-iso-string instead. npm WARN deprecated jade@0.26.3: Jade has been renamed to pug, please install the latest version of pug instead of jade npm WARN deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue npm WARN prefer global coffee-script@1.11.1 should be installed with -g npm WARN prefer global marked@0.3.6 should be installed with -g npm WARN prefer global node-gyp@3.4.0 should be installed with -g > node-sass@3.13.0 install /var/www/hong.io/koel/node_modules/node-sass > node scripts/install.js Downloading binary from https://github.com/sass/node-sass/releases/download/v3.13.0/linux-x64-48_binding.node Download complete ] - : Binary saved to /var/www/hong.io/koel/node_modules/node-sass/vendor/linux-x64-48/binding.node Caching binary to /home/shen/.npm/node-sass/3.13.0/linux-x64-48_binding.node > node-sass@3.13.0 postinstall /var/www/hong.io/koel/node_modules/node-sass > node scripts/build.js Binary found at /var/www/hong.io/koel/node_modules/node-sass/vendor/linux-x64-48/binding.node Testing binary Binary is fine > koel@ postinstall /var/www/hong.io/koel > cross-env NODE_ENV=production && gulp --production [12:08:12] Using gulpfile /var/www/hong.io/koel/gulpfile.js [12:08:12] Starting 'default'... [12:08:12] Starting 'browserify'... Fetching Browserify Source Files... - resources/assets/js/main.js Saving To... - public/js/main.js [12:08:13] Finished 'default' after 1000 ms [12:08:39] gulp-notify: [Laravel Elixir] Browserify Compiled! [12:08:40] Finished 'browserify' after 28 s [12:08:40] Starting 'sass'... Fetching Sass Source Files... - resources/assets/sass/app.scss Saving To... - public/css/app.css stream.js:74 throw er; // Unhandled stream error in pipe. ^ Error: EPERM: operation not permitted, chmod '/var/www/hong.io/koel/public/css/app.css' at Error (native) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/chokidar/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/gulp-watch/node_modules/chokidar/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm ERR! Linux 4.4.0-31-generic npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" npm ERR! node v6.9.1 npm ERR! npm v3.10.8 npm ERR! code ELIFECYCLE npm ERR! koel@ postinstall: `cross-env NODE_ENV=production && gulp --production` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the koel@ postinstall script 'cross-env NODE_ENV=production && gulp --production'. npm ERR! Make sure you have the latest version of node.js and npm installed. npm ERR! If you do, this is most likely a problem with the koel package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! cross-env NODE_ENV=production && gulp --production npm ERR! You can get information on how to open an issue for this project with: npm ERR! npm bugs koel npm ERR! Or if that isn't available, you can get their info via: npm ERR! npm owner ls koel npm ERR! There is likely additional logging output above. npm ERR! Please include the following file with any support request: npm ERR! /var/www/hong.io/koel/npm-debug.log ``` ## Filesystem permissions (`ls -al`) ``` total 1232 drwxrwx--- 14 www-data www-data 4096 Nov 21 12:08 . drwxr-xr-x 8 shen www-data 4096 Sep 27 04:53 .. -rwxrwx--- 1 www-data www-data 53 Sep 27 04:06 .babelrc -rwxrwx--- 1 www-data www-data 106 Sep 27 04:06 .editorconfig -rwxrwx--- 1 www-data www-data 2778 Sep 27 06:42 .env -rwxrwx--- 1 www-data www-data 2541 Sep 27 04:06 .env.example drwxrwx--- 8 www-data www-data 4096 Nov 21 12:05 .git -rwxrwx--- 1 www-data www-data 61 Sep 27 04:06 .gitattributes -rwxrwx--- 1 www-data www-data 975 Sep 27 04:05 .gitignore -rwxrwx--- 1 www-data www-data 3957 Sep 27 04:06 .htaccess -rwxrwx--- 1 www-data www-data 92 Sep 27 04:06 .jshintrc -rwxrwx--- 1 www-data www-data 46072 Sep 27 04:05 .phpstorm.meta.php -rwxrwx--- 1 www-data www-data 562 Sep 27 04:06 .travis.yml drwxrwx--- 2 www-data www-data 4096 Sep 27 06:13 .well-known -rwxrwx--- 1 www-data www-data 867 Sep 27 04:06 ISSUE_TEMPLATE.md -rwxrwx--- 1 www-data www-data 1074 Sep 27 04:06 LICENSE.md -rwxrwx--- 1 www-data www-data 10191 Sep 27 04:06 README.md drwxrwx--- 15 www-data www-data 4096 Sep 27 04:05 app -rwxrwx--- 1 www-data www-data 1646 Sep 27 04:06 artisan drwxrwx--- 3 www-data www-data 4096 Sep 27 04:05 bootstrap -rwxrwx--- 1 www-data www-data 1678 Sep 27 04:05 composer.json -rwxrwx--- 1 www-data www-data 146441 Sep 27 04:45 composer.lock drwxrwx--- 2 www-data www-data 4096 Sep 27 04:05 config drwxrwx--- 5 www-data www-data 4096 Sep 27 04:05 database -rwxrwx--- 1 www-data www-data 1572 Sep 27 04:05 gulpfile.js -rwxrwx--- 1 www-data www-data 1760 Sep 27 04:06 index.php -rw-rw-r-- 1 www-data www-data 68 Nov 1 04:05 info.php -rwxrwx--- 1 www-data www-data 1283 Sep 27 04:05 nginx.conf.example drwxrwxr-x 885 shen shen 36864 Nov 21 12:08 node_modules -rw-rw-r-- 1 shen shen 869633 Nov 21 12:08 npm-debug.log -rwxrwx--- 1 www-data www-data 1614 Sep 27 04:05 package.json -rwxrwx--- 1 www-data www-data 87 Sep 27 04:05 phpspec.yml -rwxrwx--- 1 www-data www-data 1072 Sep 27 04:06 phpunit.xml drwxrwx--- 6 www-data www-data 4096 Sep 27 04:06 public drwxrwx--- 5 www-data www-data 4096 Sep 27 04:05 resources -rwxrwx--- 1 www-data www-data 24 Sep 27 04:05 robots.txt -rwxrwx--- 1 www-data www-data 529 Sep 27 04:06 server.php drwxrwx--- 5 www-data www-data 4096 Sep 27 04:05 storage drwxrwx--- 5 www-data www-data 4096 Sep 27 04:06 tests drwxrwx--- 36 www-data www-data 4096 Sep 27 04:45 vendor ```
kerem closed this issue 2026-02-26 02:32:54 +03:00
Author
Owner

@ShenZhouHong commented on GitHub (Nov 21, 2016):

Attempted Troubleshooting

stream.js:74
      throw er; // Unhandled stream error in pipe.
      ^

Error: EPERM: operation not permitted, chmod '/var/www/hong.io/koel/public/css/app.css'
    at Error (native)

This appears to be some sort of permissions error, as it states the operation is not permitted. I attempted to resolve this issue by deleting the contents of node_modules again (rm -rf node_modules) and rerunning npm install as root.

sudo npm install

This results in the following output

npm WARN lifecycle koel@~postinstall: cannot run in wd %s %s (wd=%s) koel@ cross-env NODE_ENV=production && gulp --production /var/www/hong.io/koel
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/gulp-watch/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
shen@pattensen:/var/www/hong.io/koel$ rm -rf node_modules/
shen@pattensen:/var/www/hong.io/koel$ sudo npm install
npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated minimatch@0.2.14: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated graceful-fs@1.2.3: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree.
npm WARN deprecated tough-cookie@2.2.2: ReDoS vulnerability parsing Set-Cookie https://nodesecurity.io/advisories/130
npm WARN deprecated node-uuid@1.4.7: use uuid module instead
npm WARN deprecated minimatch@1.0.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN deprecated jade@0.26.3: Jade has been renamed to pug, please install the latest version of pug instead of jade
npm WARN deprecated to-iso-string@0.0.2: to-iso-string has been deprecated, use @segment/to-iso-string instead.
npm WARN deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN prefer global coffee-script@1.11.1 should be installed with -g
npm WARN prefer global marked@0.3.6 should be installed with -g
npm WARN prefer global node-gyp@3.4.0 should be installed with -g

> node-sass@3.13.0 install /var/www/hong.io/koel/node_modules/node-sass
> node scripts/install.js

module.js:471
    throw err;
    ^

Error: Cannot find module '/var/www/hong.io/koel/node_modules/node-sass/scripts/install.js'
    at Function.Module._resolveFilename (module.js:469:15)
    at Function.Module._load (module.js:417:25)
    at Module.runMain (module.js:604:10)
    at run (bootstrap_node.js:394:7)
    at startup (bootstrap_node.js:149:9)
    at bootstrap_node.js:509:3
koel@ /var/www/hong.io/koel
├── babel-plugin-lodash@2.3.0 
├── babel-plugin-transform-runtime@6.15.0 
├─┬ babel-polyfill@6.16.0 
│ ├── core-js@2.4.1 
│ └── regenerator-runtime@0.9.6 
├─┬ babel-preset-es2015@6.18.0 
│ ├── babel-plugin-check-es2015-constants@6.8.0 
│ ├── babel-plugin-transform-es2015-arrow-functions@6.8.0 
│ ├── babel-plugin-transform-es2015-block-scoped-functions@6.8.0 
│ ├─┬ babel-plugin-transform-es2015-block-scoping@6.18.0 
│ │ ├── babel-template@6.16.0 
│ │ ├─┬ babel-traverse@6.19.0 
│ │ │ ├── globals@9.14.0 
│ │ │ └─┬ invariant@2.2.2 
│ │ │   └── loose-envify@1.3.0 
│ │ └─┬ babel-types@6.19.0 
│ │   └── to-fast-properties@1.0.2 
│ ├─┬ babel-plugin-transform-es2015-classes@6.18.0 
│ │ ├── babel-helper-define-map@6.18.0 
│ │ ├── babel-helper-function-name@6.18.0 
│ │ ├── babel-helper-optimise-call-expression@6.18.0 
│ │ ├── babel-helper-replace-supers@6.18.0 
│ │ └── babel-messages@6.8.0 
│ ├── babel-plugin-transform-es2015-computed-properties@6.8.0 
│ ├── babel-plugin-transform-es2015-destructuring@6.19.0 
│ ├── babel-plugin-transform-es2015-duplicate-keys@6.8.0 
│ ├── babel-plugin-transform-es2015-for-of@6.18.0 
│ ├── babel-plugin-transform-es2015-function-name@6.9.0 
│ ├── babel-plugin-transform-es2015-literals@6.8.0 
│ ├── babel-plugin-transform-es2015-modules-amd@6.18.0 
│ ├─┬ babel-plugin-transform-es2015-modules-commonjs@6.18.0 
│ │ └── babel-plugin-transform-strict-mode@6.18.0 
│ ├─┬ babel-plugin-transform-es2015-modules-systemjs@6.19.0 
│ │ └── babel-helper-hoist-variables@6.18.0 
│ ├── babel-plugin-transform-es2015-modules-umd@6.18.0 
│ ├── babel-plugin-transform-es2015-object-super@6.8.0 
│ ├─┬ babel-plugin-transform-es2015-parameters@6.18.0 
│ │ ├── babel-helper-call-delegate@6.18.0 
│ │ └── babel-helper-get-function-arity@6.18.0 
│ ├── babel-plugin-transform-es2015-shorthand-properties@6.18.0 
│ ├── babel-plugin-transform-es2015-spread@6.8.0 
│ ├─┬ babel-plugin-transform-es2015-sticky-regex@6.8.0 
│ │ └── babel-helper-regex@6.18.0 
│ ├── babel-plugin-transform-es2015-template-literals@6.8.0 
│ ├── babel-plugin-transform-es2015-typeof-symbol@6.18.0 
│ ├─┬ babel-plugin-transform-es2015-unicode-regex@6.11.0 
│ │ └─┬ regexpu-core@2.0.0 
│ │   ├── regenerate@1.3.2 
│ │   ├── regjsgen@0.2.0 
│ │   └─┬ regjsparser@0.1.5 
│ │     └── jsesc@0.5.0 
│ └─┬ babel-plugin-transform-regenerator@6.16.1 
│   └── private@0.1.6 
├─┬ babel-preset-react@6.16.0 
│ ├── babel-plugin-syntax-flow@6.18.0 
│ ├── babel-plugin-syntax-jsx@6.18.0 
│ ├── babel-plugin-transform-flow-strip-types@6.18.0 
│ ├── babel-plugin-transform-react-display-name@6.8.0 
│ ├─┬ babel-plugin-transform-react-jsx@6.8.0 
│ │ └── babel-helper-builder-react-jsx@6.18.0 
│ ├── babel-plugin-transform-react-jsx-self@6.11.0 
│ └── babel-plugin-transform-react-jsx-source@6.9.0 
├─┬ babel-register@6.18.0 
│ ├─┬ babel-core@6.18.2 
│ │ ├─┬ babel-code-frame@6.16.0 
│ │ │ └── js-tokens@2.0.0 
│ │ ├─┬ babel-generator@6.19.0 
│ │ │ ├─┬ detect-indent@4.0.0 
│ │ │ │ └─┬ repeating@2.0.1 
│ │ │ │   └─┬ is-finite@1.0.2 
│ │ │ │     └── number-is-nan@1.0.1 
│ │ │ └── jsesc@1.3.0 
│ │ ├── babel-helpers@6.16.0 
│ │ ├── babylon@6.14.1 
│ │ ├─┬ debug@2.3.3 
│ │ │ └── ms@0.7.2 
│ │ ├── json5@0.5.0 
│ │ ├─┬ minimatch@3.0.3 
│ │ │ └─┬ brace-expansion@1.1.6 
│ │ │   └── concat-map@0.0.1 
│ │ ├── path-is-absolute@1.0.1 
│ │ └── slash@1.0.0 
│ ├─┬ home-or-tmp@2.0.0 
│ │ ├── os-homedir@1.0.2 
│ │ └── os-tmpdir@1.0.2 
│ ├─┬ mkdirp@0.5.1 
│ │ └── minimist@0.0.8 
│ └── source-map-support@0.4.6 
├── babel-runtime@6.18.0 
├── blueimp-md5@2.5.0 
├─┬ browserify-hmr@0.3.5 
│ ├── convert-source-map@1.3.0 
│ ├─┬ express@4.14.0 
│ │ ├─┬ accepts@1.3.3 
│ │ │ └── negotiator@0.6.1 
│ │ ├── array-flatten@1.1.1 
│ │ ├── content-disposition@0.5.1 
│ │ ├── content-type@1.0.2 
│ │ ├── cookie@0.3.1 
│ │ ├── cookie-signature@1.0.6 
│ │ ├─┬ debug@2.2.0 
│ │ │ └── ms@0.7.1 
│ │ ├── depd@1.1.0 
│ │ ├── encodeurl@1.0.1 
│ │ ├── escape-html@1.0.3 
│ │ ├── etag@1.7.0 
│ │ ├─┬ finalhandler@0.5.0 
│ │ │ ├─┬ debug@2.2.0 
│ │ │ │ └── ms@0.7.1 
│ │ │ ├── statuses@1.3.1 
│ │ │ └── unpipe@1.0.0 
│ │ ├── fresh@0.3.0 
│ │ ├── merge-descriptors@1.0.1 
│ │ ├── methods@1.1.2 
│ │ ├─┬ on-finished@2.3.0 
│ │ │ └── ee-first@1.1.1 
│ │ ├── parseurl@1.3.1 
│ │ ├── path-to-regexp@0.1.7 
│ │ ├─┬ proxy-addr@1.1.2 
│ │ │ ├── forwarded@0.1.0 
│ │ │ └── ipaddr.js@1.1.1 
│ │ ├── qs@6.2.0 
│ │ ├── range-parser@1.2.0 
│ │ ├─┬ send@0.14.1 
│ │ │ ├── debug@2.2.0 
│ │ │ ├── destroy@1.0.4 
│ │ │ ├─┬ http-errors@1.5.1 
│ │ │ │ └── setprototypeof@1.0.2 
│ │ │ ├── mime@1.3.4 
│ │ │ └── ms@0.7.1 
│ │ ├── serve-static@1.11.1 
│ │ ├─┬ type-is@1.6.14 
│ │ │ └── media-typer@0.3.0 
│ │ ├── utils-merge@1.0.0 
│ │ └── vary@1.1.0 
│ ├── rsvp@3.3.3 
│ ├─┬ socket.io@1.6.0 
│ │ ├─┬ engine.io@1.8.0 
│ │ │ ├── base64id@0.1.0 
│ │ │ ├─┬ engine.io-parser@1.3.1 
│ │ │ │ ├── after@0.8.1 
│ │ │ │ ├── arraybuffer.slice@0.0.6 
│ │ │ │ ├── base64-arraybuffer@0.1.5 
│ │ │ │ ├── blob@0.0.4 
│ │ │ │ ├── has-binary@0.1.6 
│ │ │ │ └── wtf-8@1.0.0 
│ │ │ └─┬ ws@1.1.1 
│ │ │   ├── options@0.0.6 
│ │ │   └── ultron@1.0.2 
│ │ ├─┬ has-binary@0.1.7 
│ │ │ └── isarray@0.0.1 
│ │ ├── socket.io-adapter@0.5.0 
│ │ └─┬ socket.io-parser@2.3.1 
│ │   ├── component-emitter@1.1.2 
│ │   ├─┬ debug@2.2.0 
│ │   │ └── ms@0.7.1 
│ │   └── json3@3.3.2 
│ ├─┬ socket.io-client@1.6.0 
│ │ ├── backo2@1.0.2 
│ │ ├── component-bind@1.0.0 
│ │ ├── component-emitter@1.2.1 
│ │ ├─┬ engine.io-client@1.8.0 
│ │ │ ├── component-emitter@1.2.1 
│ │ │ ├── component-inherit@0.0.3 
│ │ │ ├── has-cors@1.1.0 
│ │ │ ├── parsejson@0.0.3 
│ │ │ ├── parseqs@0.0.5 
│ │ │ ├── xmlhttprequest-ssl@1.5.3 
│ │ │ └── yeast@0.1.2 
│ │ ├── indexof@0.0.1 
│ │ ├── object-component@0.0.3 
│ │ ├─┬ parseuri@0.0.5 
│ │ │ └─┬ better-assert@1.0.2 
│ │ │   └── callsite@1.0.0 
│ │ └── to-array@0.1.4 
│ ├── source-map@0.5.6 
│ ├── synchd@1.0.2 
│ └─┬ through2@2.0.1 
│   ├─┬ readable-stream@2.0.6 
│   │ ├── core-util-is@1.0.2 
│   │ ├── isarray@1.0.0 
│   │ ├── process-nextick-args@1.0.7 
│   │ ├── string_decoder@0.10.31 
│   │ └── util-deprecate@1.0.2 
│   └── xtend@4.0.1 
├─┬ chai@3.5.0 
│ ├── assertion-error@1.0.2 
│ ├─┬ deep-eql@0.1.3 
│ │ └── type-detect@0.1.1 
│ └── type-detect@1.0.0 
├─┬ cross-env@1.0.8 
│ ├─┬ cross-spawn@3.0.1 
│ │ └─┬ which@1.2.12 
│ │   └── isexe@1.1.2 
│ └─┬ lodash.assign@3.2.0 
│   ├── lodash._baseassign@3.2.0 
│   ├─┬ lodash._createassigner@3.1.1 
│   │ └── lodash._bindcallback@3.0.1 
│   └─┬ lodash.keys@3.1.2 
│     ├── lodash._getnative@3.9.1 
│     ├── lodash.isarguments@3.1.0 
│     └── lodash.isarray@3.0.4 
├── d@0.1.1  extraneous
├── font-awesome@4.7.0 
├─┬ gulp@3.9.1 
│ ├── archy@1.0.0 
│ ├─┬ chalk@1.1.3 
│ │ ├── ansi-styles@2.2.1 
│ │ ├── escape-string-regexp@1.0.5 
│ │ ├─┬ has-ansi@2.0.0 
│ │ │ └── ansi-regex@2.0.0 
│ │ ├── strip-ansi@3.0.1 
│ │ └── supports-color@2.0.0 
│ ├── deprecated@0.0.1 
│ ├── interpret@1.0.1 
│ ├─┬ liftoff@2.3.0 
│ │ ├── extend@3.0.0 
│ │ ├─┬ findup-sync@0.4.3 
│ │ │ ├─┬ detect-file@0.1.0 
│ │ │ │ └── fs-exists-sync@0.1.0 
│ │ │ ├─┬ is-glob@2.0.1 
│ │ │ │ └── is-extglob@1.0.0 
│ │ │ ├─┬ micromatch@2.3.11 
│ │ │ │ ├─┬ arr-diff@2.0.0 
│ │ │ │ │ └── arr-flatten@1.0.1 
│ │ │ │ ├── array-unique@0.2.1 
│ │ │ │ ├─┬ braces@1.8.5 
│ │ │ │ │ ├─┬ expand-range@1.8.2 
│ │ │ │ │ │ └─┬ fill-range@2.2.3 
│ │ │ │ │ │   ├── is-number@2.1.0 
│ │ │ │ │ │   ├─┬ isobject@2.1.0 
│ │ │ │ │ │   │ └── isarray@1.0.0 
│ │ │ │ │ │   ├── randomatic@1.1.5 
│ │ │ │ │ │   └── repeat-string@1.6.1 
│ │ │ │ │ ├── preserve@0.2.0 
│ │ │ │ │ └── repeat-element@1.1.2 
│ │ │ │ ├─┬ expand-brackets@0.1.5 
│ │ │ │ │ └── is-posix-bracket@0.1.1 
│ │ │ │ ├── extglob@0.3.2 
│ │ │ │ ├── filename-regex@2.0.0 
│ │ │ │ ├─┬ kind-of@3.0.4 
│ │ │ │ │ └── is-buffer@1.1.4 
│ │ │ │ ├── normalize-path@2.0.1 
│ │ │ │ ├─┬ object.omit@2.0.1 
│ │ │ │ │ ├─┬ for-own@0.1.4 
│ │ │ │ │ │ └── for-in@0.1.6 
│ │ │ │ │ └── is-extendable@0.1.1 
│ │ │ │ ├─┬ parse-glob@3.0.4 
│ │ │ │ │ ├─┬ glob-base@0.3.0 
│ │ │ │ │ │ └── glob-parent@2.0.0 
│ │ │ │ │ └── is-dotfile@1.0.2 
│ │ │ │ └─┬ regex-cache@0.4.3 
│ │ │ │   ├── is-equal-shallow@0.1.3 
│ │ │ │   └── is-primitive@2.0.0 
│ │ │ └─┬ resolve-dir@0.1.1 
│ │ │   └─┬ global-modules@0.2.3 
│ │ │     ├─┬ global-prefix@0.1.4 
│ │ │     │ ├── ini@1.3.4 
│ │ │     │ └── osenv@0.1.3 
│ │ │     └── is-windows@0.2.0 
│ │ ├─┬ fined@1.0.2 
│ │ │ ├── expand-tilde@1.2.2 
│ │ │ ├── lodash.assignwith@4.2.0 
│ │ │ ├── lodash.isempty@4.4.0 
│ │ │ ├── lodash.pick@4.4.0 
│ │ │ └─┬ parse-filepath@1.0.1 
│ │ │   ├─┬ is-absolute@0.2.6 
│ │ │   │ └─┬ is-relative@0.2.1 
│ │ │   │   └─┬ is-unc-path@0.1.1 
│ │ │   │     └── unc-path-regex@0.1.2 
│ │ │   ├── map-cache@0.2.2 
│ │ │   └─┬ path-root@0.1.1 
│ │ │     └── path-root-regex@0.1.2 
│ │ ├── flagged-respawn@0.3.2 
│ │ ├── lodash.isplainobject@4.0.6 
│ │ ├── lodash.isstring@4.0.1 
│ │ ├── lodash.mapvalues@4.6.0 
│ │ ├── rechoir@0.6.2 
│ │ └── resolve@1.1.7 
│ ├── minimist@1.2.0 
│ ├─┬ orchestrator@0.3.8 
│ │ ├─┬ end-of-stream@0.1.5 
│ │ │ └─┬ once@1.3.3 
│ │ │   └── wrappy@1.0.2 
│ │ ├── sequencify@0.0.7 
│ │ └── stream-consume@0.1.0 
│ ├── pretty-hrtime@1.0.3 
│ ├── semver@4.3.6 
│ ├── tildify@1.2.0 
│ ├─┬ v8flags@2.0.11 
│ │ └── user-home@1.1.1 
│ └─┬ vinyl-fs@0.3.14 
│   ├── defaults@1.0.3 
│   ├─┬ glob-stream@3.1.18 
│   │ ├─┬ glob@4.5.3 
│   │ │ ├── inflight@1.0.6 
│   │ │ └── minimatch@2.0.10 
│   │ ├─┬ glob2base@0.0.12 
│   │ │ └── find-index@0.1.1 
│   │ ├── minimatch@2.0.10 
│   │ ├── ordered-read-streams@0.1.0 
│   │ ├─┬ through2@0.6.5 
│   │ │ └── readable-stream@1.0.34 
│   │ └── unique-stream@1.0.0 
│   ├─┬ glob-watcher@0.0.6 
│   │ └─┬ gaze@0.5.2 
│   │   └─┬ globule@0.1.0 
│   │     ├─┬ glob@3.1.21 
│   │     │ ├── graceful-fs@1.2.3 
│   │     │ └── inherits@1.0.2 
│   │     ├── lodash@1.0.2 
│   │     └─┬ minimatch@0.2.14 
│   │       └── lru-cache@2.7.3 
│   ├─┬ graceful-fs@3.0.11 
│   │ └── natives@1.1.0 
│   ├─┬ strip-bom@1.0.0 
│   │ ├── first-chunk-stream@1.0.0 
│   │ └── is-utf8@0.2.1 
│   ├─┬ through2@0.6.5 
│   │ └── readable-stream@1.0.34 
│   └─┬ vinyl@0.4.6 
│     └── clone@0.2.0 
├─┬ gulp-util@3.0.7 
│ ├── array-differ@1.0.0 
│ ├── array-uniq@1.0.3 
│ ├── beeper@1.1.1 
│ ├─┬ dateformat@1.0.12 
│ │ ├── get-stdin@4.0.1 
│ │ └─┬ meow@3.7.0 
│ │   ├─┬ camelcase-keys@2.1.0 
│ │   │ └── camelcase@2.1.1 
│ │   ├─┬ loud-rejection@1.6.0 
│ │   │ ├─┬ currently-unhandled@0.4.1 
│ │   │ │ └── array-find-index@1.0.2 
│ │   │ └── signal-exit@3.0.1 
│ │   ├── map-obj@1.0.1 
│ │   ├── minimist@1.2.0 
│ │   ├─┬ normalize-package-data@2.3.5 
│ │   │ ├── hosted-git-info@2.1.5 
│ │   │ ├─┬ is-builtin-module@1.0.0 
│ │   │ │ └── builtin-modules@1.1.1 
│ │   │ └─┬ validate-npm-package-license@3.0.1 
│ │   │   ├─┬ spdx-correct@1.0.2 
│ │   │   │ └── spdx-license-ids@1.2.2 
│ │   │   └── spdx-expression-parse@1.0.4 
│ │   ├─┬ read-pkg-up@1.0.1 
│ │   │ ├─┬ find-up@1.1.2 
│ │   │ │ └── path-exists@2.1.0 
│ │   │ └─┬ read-pkg@1.1.0 
│ │   │   ├─┬ load-json-file@1.1.0 
│ │   │   │ ├── graceful-fs@4.1.10 
│ │   │   │ ├─┬ parse-json@2.2.0 
│ │   │   │ │ └─┬ error-ex@1.3.0 
│ │   │   │ │   └── is-arrayish@0.2.1 
│ │   │   │ ├── pify@2.3.0 
│ │   │   │ └── strip-bom@2.0.0 
│ │   │   └── path-type@1.1.0 
│ │   ├─┬ redent@1.0.0 
│ │   │ ├── indent-string@2.1.0 
│ │   │ └── strip-indent@1.0.1 
│ │   └── trim-newlines@1.0.0 
│ ├─┬ fancy-log@1.2.0 
│ │ └── time-stamp@1.0.1 
│ ├─┬ gulplog@1.0.0 
│ │ └── glogg@1.0.0 
│ ├─┬ has-gulplog@0.1.0 
│ │ └── sparkles@1.0.0 
│ ├── lodash._reescape@3.0.0 
│ ├── lodash._reevaluate@3.0.0 
│ ├── lodash._reinterpolate@3.0.0 
│ ├─┬ lodash.template@3.6.2 
│ │ ├── lodash._basecopy@3.0.1 
│ │ ├── lodash._basetostring@3.0.1 
│ │ ├── lodash._basevalues@3.0.0 
│ │ ├── lodash._isiterateecall@3.0.9 
│ │ ├─┬ lodash.escape@3.2.0 
│ │ │ └── lodash._root@3.0.1 
│ │ ├── lodash.restparam@3.6.1 
│ │ └── lodash.templatesettings@3.1.1 
│ ├── minimist@1.2.0 
│ ├─┬ multipipe@0.1.2 
│ │ └─┬ duplexer2@0.0.2 
│ │   └── readable-stream@1.1.14 
│ ├── object-assign@3.0.0 
│ ├── replace-ext@0.0.1 
│ └─┬ vinyl@0.5.3 
│   ├── clone@1.0.2 
│   └── clone-stats@0.0.1 
├── ismobilejs@0.4.0 
├── jquery@2.2.4 
├─┬ jsdom@9.8.3 
│ ├── abab@1.0.3 
│ ├── acorn@2.7.0 
│ ├── acorn-globals@1.0.9 
│ ├── array-equal@1.0.0 
│ ├── content-type-parser@1.0.1 
│ ├── cssom@0.3.1 
│ ├── cssstyle@0.2.37 
│ ├─┬ escodegen@1.8.1 
│ │ ├── esprima@2.7.3 
│ │ ├── estraverse@1.9.3 
│ │ ├── esutils@2.0.2 
│ │ ├─┬ optionator@0.8.2 
│ │ │ ├── deep-is@0.1.3 
│ │ │ ├── fast-levenshtein@2.0.5 
│ │ │ ├── levn@0.3.0 
│ │ │ ├── prelude-ls@1.1.2 
│ │ │ ├── type-check@0.3.2 
│ │ │ └── wordwrap@1.0.0 
│ │ └─┬ source-map@0.2.0 
│ │   └── amdefine@1.0.1 
│ ├── html-encoding-sniffer@1.0.1 
│ ├── iconv-lite@0.4.14 
│ ├── nwmatcher@1.3.9 
│ ├── parse5@1.5.1 
│ ├─┬ request@2.79.0 
│ │ ├── aws-sign2@0.6.0 
│ │ ├── aws4@1.5.0 
│ │ ├── caseless@0.11.0 
│ │ ├─┬ combined-stream@1.0.5 
│ │ │ └── delayed-stream@1.0.0 
│ │ ├── forever-agent@0.6.1 
│ │ ├─┬ form-data@2.1.2 
│ │ │ └── asynckit@0.4.0 
│ │ ├─┬ har-validator@2.0.6 
│ │ │ ├─┬ commander@2.9.0 
│ │ │ │ └── graceful-readlink@1.0.1 
│ │ │ ├─┬ is-my-json-valid@2.15.0 
│ │ │ │ ├── generate-function@2.0.0 
│ │ │ │ ├─┬ generate-object-property@1.2.0 
│ │ │ │ │ └── is-property@1.0.2 
│ │ │ │ └── jsonpointer@4.0.0 
│ │ │ └─┬ pinkie-promise@2.0.1 
│ │ │   └── pinkie@2.0.4 
│ │ ├─┬ hawk@3.1.3 
│ │ │ ├── boom@2.10.1 
│ │ │ ├── cryptiles@2.0.5 
│ │ │ ├── hoek@2.16.3 
│ │ │ └── sntp@1.0.9 
│ │ ├─┬ http-signature@1.1.1 
│ │ │ ├── assert-plus@0.2.0 
│ │ │ ├─┬ jsprim@1.3.1 
│ │ │ │ ├── extsprintf@1.0.2 
│ │ │ │ ├── json-schema@0.2.3 
│ │ │ │ └── verror@1.3.6 
│ │ │ └─┬ sshpk@1.10.1 
│ │ │   ├── asn1@0.2.3 
│ │ │   ├── assert-plus@1.0.0 
│ │ │   ├── bcrypt-pbkdf@1.0.0 
│ │ │   ├─┬ dashdash@1.14.0 
│ │ │   │ └── assert-plus@1.0.0 
│ │ │   ├── ecc-jsbn@0.1.1 
│ │ │   ├─┬ getpass@0.1.6 
│ │ │   │ └── assert-plus@1.0.0 
│ │ │   ├── jodid25519@1.0.2 
│ │ │   ├── jsbn@0.1.0 
│ │ │   └── tweetnacl@0.14.3 
│ │ ├── is-typedarray@1.0.0 
│ │ ├── isstream@0.1.2 
│ │ ├── json-stringify-safe@5.0.1 
│ │ ├─┬ mime-types@2.1.13 
│ │ │ └── mime-db@1.25.0 
│ │ ├── oauth-sign@0.8.2 
│ │ ├── qs@6.3.0 
│ │ ├── stringstream@0.0.5 
│ │ ├── tunnel-agent@0.4.3 
│ │ └── uuid@3.0.0 
│ ├── sax@1.2.1 
│ ├── symbol-tree@3.1.4 
│ ├─┬ tough-cookie@2.3.2 
│ │ └── punycode@1.4.1 
│ ├── webidl-conversions@3.0.1 
│ ├─┬ whatwg-encoding@1.0.1 
│ │ └── iconv-lite@0.4.13 
│ ├─┬ whatwg-url@3.1.0 
│ │ └── tr46@0.0.3 
│ └── xml-name-validator@2.0.1 
├── local-storage@1.4.2 
├── lodash@4.17.2 
├─┬ mocha@2.5.3 
│ ├── commander@2.3.0 
│ ├─┬ debug@2.2.0 
│ │ └── ms@0.7.1 
│ ├── diff@1.4.0 
│ ├── escape-string-regexp@1.0.2 
│ ├─┬ glob@3.2.11 
│ │ ├── inherits@2.0.3 
│ │ └─┬ minimatch@0.3.0 
│ │   ├── lru-cache@2.7.3 
│ │   └── sigmund@1.0.1 
│ ├── growl@1.9.2 
│ ├─┬ jade@0.26.3 
│ │ ├── commander@0.6.1 
│ │ └── mkdirp@0.3.0 
│ ├── supports-color@1.2.0 
│ └── to-iso-string@0.0.2 
├── nprogress@0.2.0 
├── plyr@1.5.20 
├─┬ postcss-cssnext@2.8.0 
│ ├─┬ autoprefixer@6.5.3 
│ │ ├── browserslist@1.4.0 
│ │ ├── caniuse-db@1.0.30000584 
│ │ ├── normalize-range@0.1.2 
│ │ ├── num2fraction@1.2.2 
│ │ ├─┬ postcss@5.2.5 
│ │ │ └── supports-color@3.1.2 
│ │ └── postcss-value-parser@3.3.0 
│ ├─┬ caniuse-api@1.5.2 
│ │ ├── browserslist@1.4.0 
│ │ ├── lodash.memoize@4.1.2 
│ │ ├── lodash.uniq@4.5.0 
│ │ └─┬ shelljs@0.7.5 
│ │   └─┬ glob@7.1.1 
│ │     └── fs.realpath@1.0.0 
│ ├─┬ pixrem@3.0.2 
│ │ ├── browserslist@1.4.0 
│ │ ├─┬ postcss@5.2.5 
│ │ │ └── supports-color@3.1.2 
│ │ └─┬ reduce-css-calc@1.3.0 
│ │   └─┬ math-expression-evaluator@1.2.14 
│ │     └── lodash.indexof@4.0.5 
│ ├─┬ pleeease-filters@3.0.0 
│ │ ├── onecolor@2.4.2 
│ │ └─┬ postcss@5.2.5 
│ │   └── supports-color@3.1.2 
│ ├─┬ postcss@5.2.5 
│ │ ├── js-base64@2.1.9 
│ │ └─┬ supports-color@3.1.2 
│ │   └── has-flag@1.0.0 
│ ├─┬ postcss-apply@0.3.0 
│ │ ├── balanced-match@0.4.2 
│ │ └─┬ postcss@5.2.5 
│ │   └── supports-color@3.1.2 
│ ├─┬ postcss-attribute-case-insensitive@1.0.1 
│ │ └─┬ postcss@5.2.5 
│ │   └── supports-color@3.1.2 
│ ├─┬ postcss-calc@5.3.1 
│ │ ├─┬ postcss@5.2.5 
│ │ │ └── supports-color@3.1.2 
│ │ └── postcss-message-helpers@2.0.0 
│ ├─┬ postcss-color-function@2.0.1 
│ │ ├─┬ css-color-function@1.3.0 
│ │ │ ├── balanced-match@0.1.0 
│ │ │ ├─┬ color@0.11.4 
│ │ │ │ └── color-convert@1.8.2 
│ │ │ ├── debug@0.7.4 
│ │ │ └── rgb@0.1.0 
│ │ └─┬ postcss@5.2.5 
│ │   └── supports-color@3.1.2 
│ ├─┬ postcss-color-gray@3.0.0 
│ │ ├─┬ color@0.7.3 
│ │ │ ├── color-convert@0.5.3 
│ │ │ └─┬ color-string@0.2.4 
│ │ │   └── color-name@1.0.1 
│ │ ├─┬ postcss@5.2.5 
│ │ │ └── supports-color@3.1.2 
│ │ └─┬ reduce-function-call@1.0.1 
│ │   └── balanced-match@0.1.0 
│ ├─┬ postcss-color-hex-alpha@2.0.0 
│ │ ├─┬ color@0.10.1 
│ │ │ ├── color-convert@0.5.3 
│ │ │ └─┬ color-string@0.3.0 
│ │ │   └── color-name@1.1.1 
│ │ └─┬ postcss@5.2.5 
│ │   └── supports-color@3.1.2 
│ ├─┬ postcss-color-hwb@2.0.0 
│ │ ├─┬ color@0.10.1 
│ │ │ └── color-convert@0.5.3 
│ │ └─┬ postcss@5.2.5 
│ │   └── supports-color@3.1.2 
│ ├─┬ postcss-color-rebeccapurple@2.0.0 
│ │ ├─┬ color@0.9.0 
│ │ │ └── color-convert@0.5.3 
│ │ └─┬ postcss@5.2.5 
│ │   └── supports-color@3.1.2 
│ ├─┬ postcss-color-rgba-fallback@2.2.0 
│ │ ├─┬ postcss@5.2.5 
│ │ │ └── supports-color@3.1.2 
│ │ └── rgb-hex@1.0.0 
│ ├─┬ postcss-custom-media@5.0.1 
│ │ └─┬ postcss@5.2.5 
│ │   └── supports-color@3.1.2 
│ ├─┬ postcss-custom-properties@5.0.1 
│ │ ├── balanced-match@0.1.0 
│ │ └─┬ postcss@5.2.5 
│ │   └── supports-color@3.1.2 
│ ├─┬ postcss-custom-selectors@3.0.0 
│ │ ├── balanced-match@0.2.1 
│ │ └─┬ postcss@5.2.5 
│ │   └── supports-color@3.1.2 
│ ├─┬ postcss-font-variant@2.0.1 
│ │ └─┬ postcss@5.2.5 
│ │   └── supports-color@3.1.2 
│ ├─┬ postcss-initial@1.5.2 
│ │ ├─┬ lodash.template@4.4.0 
│ │ │ └── lodash.templatesettings@4.1.0 
│ │ └─┬ postcss@5.2.5 
│ │   └── supports-color@3.1.2 
│ ├─┬ postcss-media-minmax@2.1.2 
│ │ └─┬ postcss@5.2.5 
│ │   └── supports-color@3.1.2 
│ ├─┬ postcss-nesting@2.3.1 
│ │ └─┬ postcss@5.2.5 
│ │   └── supports-color@3.1.2 
│ ├─┬ postcss-pseudo-class-any-link@1.0.0 
│ │ ├─┬ postcss@5.2.5 
│ │ │ └── supports-color@3.1.2 
│ │ └── postcss-selector-parser@1.3.3 
│ ├─┬ postcss-pseudoelements@3.0.0 
│ │ └─┬ postcss@5.2.5 
│ │   └── supports-color@3.1.2 
│ ├─┬ postcss-replace-overflow-wrap@1.0.0 
│ │ └─┬ postcss@5.2.5 
│ │   └── supports-color@3.1.2 
│ ├─┬ postcss-selector-matches@2.0.5 
│ │ └─┬ postcss@5.2.5 
│ │   └── supports-color@3.1.2 
│ └─┬ postcss-selector-not@2.0.0 
│   ├── balanced-match@0.2.1 
│   └─┬ postcss@5.2.5 
│     └── supports-color@3.1.2 
├── rangeslider.js@2.2.1 
├── rangetouch@0.0.9 
├── select@1.1.0 
├─┬ sinon@1.17.6 
│ ├── formatio@1.1.1 
│ ├── lolex@1.3.2 
│ ├── samsam@1.1.2 
│ └─┬ util@0.10.3 
│   └── inherits@2.0.1 
├── sweetalert@1.1.3 
├── vue@2.0.8 
├── vue-hot-reload-api@1.3.3 
├─┬ vueify@9.3.0 
│ ├─┬ cssnano@3.8.0 
│ │ ├── decamelize@1.2.0 
│ │ ├── defined@1.0.0 
│ │ ├─┬ has@1.0.1 
│ │ │ └── function-bind@1.1.0 
│ │ ├─┬ postcss@5.2.5 
│ │ │ └── supports-color@3.1.2 
│ │ ├─┬ postcss-colormin@2.2.1 
│ │ │ ├─┬ colormin@1.1.2 
│ │ │ │ └── css-color-names@0.0.4 
│ │ │ └─┬ postcss@5.2.5 
│ │ │   └── supports-color@3.1.2 
│ │ ├─┬ postcss-convert-values@2.4.1 
│ │ │ └─┬ postcss@5.2.5 
│ │ │   └── supports-color@3.1.2 
│ │ ├─┬ postcss-discard-comments@2.0.4 
│ │ │ └─┬ postcss@5.2.5 
│ │ │   └── supports-color@3.1.2 
│ │ ├─┬ postcss-discard-duplicates@2.0.2 
│ │ │ └─┬ postcss@5.2.5 
│ │ │   └── supports-color@3.1.2 
│ │ ├─┬ postcss-discard-empty@2.1.0 
│ │ │ └─┬ postcss@5.2.5 
│ │ │   └── supports-color@3.1.2 
│ │ ├─┬ postcss-discard-overridden@0.1.1 
│ │ │ └─┬ postcss@5.2.5 
│ │ │   └── supports-color@3.1.2 
│ │ ├─┬ postcss-discard-unused@2.2.2 
│ │ │ ├─┬ postcss@5.2.5 
│ │ │ │ └── supports-color@3.1.2 
│ │ │ └── uniqs@2.0.0 
│ │ ├─┬ postcss-filter-plugins@2.0.2 
│ │ │ ├─┬ postcss@5.2.5 
│ │ │ │ └── supports-color@3.1.2 
│ │ │ └─┬ uniqid@4.1.0 
│ │ │   └── macaddress@0.2.8 
│ │ ├─┬ postcss-merge-idents@2.1.7 
│ │ │ └─┬ postcss@5.2.5 
│ │ │   └── supports-color@3.1.2 
│ │ ├─┬ postcss-merge-longhand@2.0.1 
│ │ │ └─┬ postcss@5.2.5 
│ │ │   └── supports-color@3.1.2 
│ │ ├─┬ postcss-merge-rules@2.0.10 
│ │ │ ├─┬ postcss@5.2.5 
│ │ │ │ └── supports-color@3.1.2 
│ │ │ └── vendors@1.0.1 
│ │ ├─┬ postcss-minify-font-values@1.0.5 
│ │ │ └─┬ postcss@5.2.5 
│ │ │   └── supports-color@3.1.2 
│ │ ├─┬ postcss-minify-gradients@1.0.5 
│ │ │ └─┬ postcss@5.2.5 
│ │ │   └── supports-color@3.1.2 
│ │ ├─┬ postcss-minify-params@1.0.5 
│ │ │ ├── alphanum-sort@1.0.2 
│ │ │ └─┬ postcss@5.2.5 
│ │ │   └── supports-color@3.1.2 
│ │ ├─┬ postcss-minify-selectors@2.0.7 
│ │ │ └─┬ postcss@5.2.5 
│ │ │   └── supports-color@3.1.2 
│ │ ├─┬ postcss-normalize-charset@1.1.1 
│ │ │ └─┬ postcss@5.2.5 
│ │ │   └── supports-color@3.1.2 
│ │ ├─┬ postcss-normalize-url@3.0.7 
│ │ │ ├── is-absolute-url@2.0.0 
│ │ │ ├─┬ normalize-url@1.8.0 
│ │ │ │ ├── prepend-http@1.0.4 
│ │ │ │ ├─┬ query-string@4.2.3 
│ │ │ │ │ └── strict-uri-encode@1.1.0 
│ │ │ │ └─┬ sort-keys@1.1.2 
│ │ │ │   └── is-plain-obj@1.1.0 
│ │ │ └─┬ postcss@5.2.5 
│ │ │   └── supports-color@3.1.2 
│ │ ├─┬ postcss-ordered-values@2.2.2 
│ │ │ └─┬ postcss@5.2.5 
│ │ │   └── supports-color@3.1.2 
│ │ ├─┬ postcss-reduce-idents@2.3.1 
│ │ │ └─┬ postcss@5.2.5 
│ │ │   └── supports-color@3.1.2 
│ │ ├─┬ postcss-reduce-initial@1.0.0 
│ │ │ └─┬ postcss@5.2.5 
│ │ │   └── supports-color@3.1.2 
│ │ ├─┬ postcss-reduce-transforms@1.0.4 
│ │ │ └─┬ postcss@5.2.5 
│ │ │   └── supports-color@3.1.2 
│ │ ├─┬ postcss-svgo@2.1.5 
│ │ │ ├─┬ is-svg@2.1.0 
│ │ │ │ └── html-comment-regex@1.1.1 
│ │ │ ├─┬ postcss@5.2.5 
│ │ │ │ └── supports-color@3.1.2 
│ │ │ └─┬ svgo@0.7.1 
│ │ │   ├─┬ coa@1.0.1 
│ │ │   │ └── q@1.4.1 
│ │ │   ├── colors@1.1.2 
│ │ │   ├─┬ csso@2.2.1 
│ │ │   │ └── clap@1.1.1 
│ │ │   ├─┬ js-yaml@3.6.1 
│ │ │   │ └─┬ argparse@1.0.9 
│ │ │   │   └── sprintf-js@1.0.3 
│ │ │   └── whet.extend@0.9.9 
│ │ ├─┬ postcss-unique-selectors@2.0.2 
│ │ │ └─┬ postcss@5.2.5 
│ │ │   └── supports-color@3.1.2 
│ │ └─┬ postcss-zindex@2.1.1 
│ │   └─┬ postcss@5.2.5 
│ │     └── supports-color@3.1.2 
│ ├── hash-sum@1.0.2 
│ ├─┬ lru-cache@4.0.1 
│ │ ├── pseudomap@1.0.2 
│ │ └── yallist@2.0.0 
│ ├── object-assign@4.1.0 
│ ├─┬ postcss@5.2.5 
│ │ └── supports-color@3.1.2 
│ ├─┬ postcss-selector-parser@2.2.2 
│ │ ├── flatten@1.0.2 
│ │ ├── indexes-of@1.0.1 
│ │ └── uniq@1.0.1 
│ ├── through@2.3.8 
│ ├── vue-hot-reload-api@2.0.6 
│ ├─┬ vue-template-compiler@2.0.8 
│ │ ├── de-indent@1.0.2 
│ │ └── he@1.1.0 
│ └── vue-template-es2015-compiler@1.2.4 
├── vueify-insert-css@1.0.0 
└─┬ youtube-player@3.1.2 
  ├── load-script@1.0.0 
  └── sister@3.0.0 

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/gulp-watch/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm ERR! Linux 4.4.0-31-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install"
npm ERR! node v6.9.1
npm ERR! npm  v3.10.8
npm ERR! code ELIFECYCLE

npm ERR! node-sass@3.13.0 install: `node scripts/install.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the node-sass@3.13.0 install script 'node scripts/install.js'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the node-sass package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node scripts/install.js
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs node-sass
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls node-sass
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /var/www/hong.io/koel/npm-debug.log

Result

It appears the upgrade failed at another step in the process, and did not resolve.

<!-- gh-comment-id:261924927 --> @ShenZhouHong commented on GitHub (Nov 21, 2016): # Attempted Troubleshooting ``` stream.js:74 throw er; // Unhandled stream error in pipe. ^ Error: EPERM: operation not permitted, chmod '/var/www/hong.io/koel/public/css/app.css' at Error (native) ``` This appears to be some sort of permissions error, as it states the operation is not permitted. I attempted to resolve this issue by deleting the contents of node_modules again (`rm -rf node_modules`) and rerunning npm install as root. ``` sudo npm install ``` This results in the following output ``` npm WARN lifecycle koel@~postinstall: cannot run in wd %s %s (wd=%s) koel@ cross-env NODE_ENV=production && gulp --production /var/www/hong.io/koel npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/chokidar/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/gulp-watch/node_modules/chokidar/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) shen@pattensen:/var/www/hong.io/koel$ rm -rf node_modules/ shen@pattensen:/var/www/hong.io/koel$ sudo npm install npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue npm WARN deprecated minimatch@0.2.14: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue npm WARN deprecated graceful-fs@1.2.3: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree. npm WARN deprecated tough-cookie@2.2.2: ReDoS vulnerability parsing Set-Cookie https://nodesecurity.io/advisories/130 npm WARN deprecated node-uuid@1.4.7: use uuid module instead npm WARN deprecated minimatch@1.0.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue npm WARN deprecated jade@0.26.3: Jade has been renamed to pug, please install the latest version of pug instead of jade npm WARN deprecated to-iso-string@0.0.2: to-iso-string has been deprecated, use @segment/to-iso-string instead. npm WARN deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue npm WARN prefer global coffee-script@1.11.1 should be installed with -g npm WARN prefer global marked@0.3.6 should be installed with -g npm WARN prefer global node-gyp@3.4.0 should be installed with -g > node-sass@3.13.0 install /var/www/hong.io/koel/node_modules/node-sass > node scripts/install.js module.js:471 throw err; ^ Error: Cannot find module '/var/www/hong.io/koel/node_modules/node-sass/scripts/install.js' at Function.Module._resolveFilename (module.js:469:15) at Function.Module._load (module.js:417:25) at Module.runMain (module.js:604:10) at run (bootstrap_node.js:394:7) at startup (bootstrap_node.js:149:9) at bootstrap_node.js:509:3 koel@ /var/www/hong.io/koel ├── babel-plugin-lodash@2.3.0 ├── babel-plugin-transform-runtime@6.15.0 ├─┬ babel-polyfill@6.16.0 │ ├── core-js@2.4.1 │ └── regenerator-runtime@0.9.6 ├─┬ babel-preset-es2015@6.18.0 │ ├── babel-plugin-check-es2015-constants@6.8.0 │ ├── babel-plugin-transform-es2015-arrow-functions@6.8.0 │ ├── babel-plugin-transform-es2015-block-scoped-functions@6.8.0 │ ├─┬ babel-plugin-transform-es2015-block-scoping@6.18.0 │ │ ├── babel-template@6.16.0 │ │ ├─┬ babel-traverse@6.19.0 │ │ │ ├── globals@9.14.0 │ │ │ └─┬ invariant@2.2.2 │ │ │ └── loose-envify@1.3.0 │ │ └─┬ babel-types@6.19.0 │ │ └── to-fast-properties@1.0.2 │ ├─┬ babel-plugin-transform-es2015-classes@6.18.0 │ │ ├── babel-helper-define-map@6.18.0 │ │ ├── babel-helper-function-name@6.18.0 │ │ ├── babel-helper-optimise-call-expression@6.18.0 │ │ ├── babel-helper-replace-supers@6.18.0 │ │ └── babel-messages@6.8.0 │ ├── babel-plugin-transform-es2015-computed-properties@6.8.0 │ ├── babel-plugin-transform-es2015-destructuring@6.19.0 │ ├── babel-plugin-transform-es2015-duplicate-keys@6.8.0 │ ├── babel-plugin-transform-es2015-for-of@6.18.0 │ ├── babel-plugin-transform-es2015-function-name@6.9.0 │ ├── babel-plugin-transform-es2015-literals@6.8.0 │ ├── babel-plugin-transform-es2015-modules-amd@6.18.0 │ ├─┬ babel-plugin-transform-es2015-modules-commonjs@6.18.0 │ │ └── babel-plugin-transform-strict-mode@6.18.0 │ ├─┬ babel-plugin-transform-es2015-modules-systemjs@6.19.0 │ │ └── babel-helper-hoist-variables@6.18.0 │ ├── babel-plugin-transform-es2015-modules-umd@6.18.0 │ ├── babel-plugin-transform-es2015-object-super@6.8.0 │ ├─┬ babel-plugin-transform-es2015-parameters@6.18.0 │ │ ├── babel-helper-call-delegate@6.18.0 │ │ └── babel-helper-get-function-arity@6.18.0 │ ├── babel-plugin-transform-es2015-shorthand-properties@6.18.0 │ ├── babel-plugin-transform-es2015-spread@6.8.0 │ ├─┬ babel-plugin-transform-es2015-sticky-regex@6.8.0 │ │ └── babel-helper-regex@6.18.0 │ ├── babel-plugin-transform-es2015-template-literals@6.8.0 │ ├── babel-plugin-transform-es2015-typeof-symbol@6.18.0 │ ├─┬ babel-plugin-transform-es2015-unicode-regex@6.11.0 │ │ └─┬ regexpu-core@2.0.0 │ │ ├── regenerate@1.3.2 │ │ ├── regjsgen@0.2.0 │ │ └─┬ regjsparser@0.1.5 │ │ └── jsesc@0.5.0 │ └─┬ babel-plugin-transform-regenerator@6.16.1 │ └── private@0.1.6 ├─┬ babel-preset-react@6.16.0 │ ├── babel-plugin-syntax-flow@6.18.0 │ ├── babel-plugin-syntax-jsx@6.18.0 │ ├── babel-plugin-transform-flow-strip-types@6.18.0 │ ├── babel-plugin-transform-react-display-name@6.8.0 │ ├─┬ babel-plugin-transform-react-jsx@6.8.0 │ │ └── babel-helper-builder-react-jsx@6.18.0 │ ├── babel-plugin-transform-react-jsx-self@6.11.0 │ └── babel-plugin-transform-react-jsx-source@6.9.0 ├─┬ babel-register@6.18.0 │ ├─┬ babel-core@6.18.2 │ │ ├─┬ babel-code-frame@6.16.0 │ │ │ └── js-tokens@2.0.0 │ │ ├─┬ babel-generator@6.19.0 │ │ │ ├─┬ detect-indent@4.0.0 │ │ │ │ └─┬ repeating@2.0.1 │ │ │ │ └─┬ is-finite@1.0.2 │ │ │ │ └── number-is-nan@1.0.1 │ │ │ └── jsesc@1.3.0 │ │ ├── babel-helpers@6.16.0 │ │ ├── babylon@6.14.1 │ │ ├─┬ debug@2.3.3 │ │ │ └── ms@0.7.2 │ │ ├── json5@0.5.0 │ │ ├─┬ minimatch@3.0.3 │ │ │ └─┬ brace-expansion@1.1.6 │ │ │ └── concat-map@0.0.1 │ │ ├── path-is-absolute@1.0.1 │ │ └── slash@1.0.0 │ ├─┬ home-or-tmp@2.0.0 │ │ ├── os-homedir@1.0.2 │ │ └── os-tmpdir@1.0.2 │ ├─┬ mkdirp@0.5.1 │ │ └── minimist@0.0.8 │ └── source-map-support@0.4.6 ├── babel-runtime@6.18.0 ├── blueimp-md5@2.5.0 ├─┬ browserify-hmr@0.3.5 │ ├── convert-source-map@1.3.0 │ ├─┬ express@4.14.0 │ │ ├─┬ accepts@1.3.3 │ │ │ └── negotiator@0.6.1 │ │ ├── array-flatten@1.1.1 │ │ ├── content-disposition@0.5.1 │ │ ├── content-type@1.0.2 │ │ ├── cookie@0.3.1 │ │ ├── cookie-signature@1.0.6 │ │ ├─┬ debug@2.2.0 │ │ │ └── ms@0.7.1 │ │ ├── depd@1.1.0 │ │ ├── encodeurl@1.0.1 │ │ ├── escape-html@1.0.3 │ │ ├── etag@1.7.0 │ │ ├─┬ finalhandler@0.5.0 │ │ │ ├─┬ debug@2.2.0 │ │ │ │ └── ms@0.7.1 │ │ │ ├── statuses@1.3.1 │ │ │ └── unpipe@1.0.0 │ │ ├── fresh@0.3.0 │ │ ├── merge-descriptors@1.0.1 │ │ ├── methods@1.1.2 │ │ ├─┬ on-finished@2.3.0 │ │ │ └── ee-first@1.1.1 │ │ ├── parseurl@1.3.1 │ │ ├── path-to-regexp@0.1.7 │ │ ├─┬ proxy-addr@1.1.2 │ │ │ ├── forwarded@0.1.0 │ │ │ └── ipaddr.js@1.1.1 │ │ ├── qs@6.2.0 │ │ ├── range-parser@1.2.0 │ │ ├─┬ send@0.14.1 │ │ │ ├── debug@2.2.0 │ │ │ ├── destroy@1.0.4 │ │ │ ├─┬ http-errors@1.5.1 │ │ │ │ └── setprototypeof@1.0.2 │ │ │ ├── mime@1.3.4 │ │ │ └── ms@0.7.1 │ │ ├── serve-static@1.11.1 │ │ ├─┬ type-is@1.6.14 │ │ │ └── media-typer@0.3.0 │ │ ├── utils-merge@1.0.0 │ │ └── vary@1.1.0 │ ├── rsvp@3.3.3 │ ├─┬ socket.io@1.6.0 │ │ ├─┬ engine.io@1.8.0 │ │ │ ├── base64id@0.1.0 │ │ │ ├─┬ engine.io-parser@1.3.1 │ │ │ │ ├── after@0.8.1 │ │ │ │ ├── arraybuffer.slice@0.0.6 │ │ │ │ ├── base64-arraybuffer@0.1.5 │ │ │ │ ├── blob@0.0.4 │ │ │ │ ├── has-binary@0.1.6 │ │ │ │ └── wtf-8@1.0.0 │ │ │ └─┬ ws@1.1.1 │ │ │ ├── options@0.0.6 │ │ │ └── ultron@1.0.2 │ │ ├─┬ has-binary@0.1.7 │ │ │ └── isarray@0.0.1 │ │ ├── socket.io-adapter@0.5.0 │ │ └─┬ socket.io-parser@2.3.1 │ │ ├── component-emitter@1.1.2 │ │ ├─┬ debug@2.2.0 │ │ │ └── ms@0.7.1 │ │ └── json3@3.3.2 │ ├─┬ socket.io-client@1.6.0 │ │ ├── backo2@1.0.2 │ │ ├── component-bind@1.0.0 │ │ ├── component-emitter@1.2.1 │ │ ├─┬ engine.io-client@1.8.0 │ │ │ ├── component-emitter@1.2.1 │ │ │ ├── component-inherit@0.0.3 │ │ │ ├── has-cors@1.1.0 │ │ │ ├── parsejson@0.0.3 │ │ │ ├── parseqs@0.0.5 │ │ │ ├── xmlhttprequest-ssl@1.5.3 │ │ │ └── yeast@0.1.2 │ │ ├── indexof@0.0.1 │ │ ├── object-component@0.0.3 │ │ ├─┬ parseuri@0.0.5 │ │ │ └─┬ better-assert@1.0.2 │ │ │ └── callsite@1.0.0 │ │ └── to-array@0.1.4 │ ├── source-map@0.5.6 │ ├── synchd@1.0.2 │ └─┬ through2@2.0.1 │ ├─┬ readable-stream@2.0.6 │ │ ├── core-util-is@1.0.2 │ │ ├── isarray@1.0.0 │ │ ├── process-nextick-args@1.0.7 │ │ ├── string_decoder@0.10.31 │ │ └── util-deprecate@1.0.2 │ └── xtend@4.0.1 ├─┬ chai@3.5.0 │ ├── assertion-error@1.0.2 │ ├─┬ deep-eql@0.1.3 │ │ └── type-detect@0.1.1 │ └── type-detect@1.0.0 ├─┬ cross-env@1.0.8 │ ├─┬ cross-spawn@3.0.1 │ │ └─┬ which@1.2.12 │ │ └── isexe@1.1.2 │ └─┬ lodash.assign@3.2.0 │ ├── lodash._baseassign@3.2.0 │ ├─┬ lodash._createassigner@3.1.1 │ │ └── lodash._bindcallback@3.0.1 │ └─┬ lodash.keys@3.1.2 │ ├── lodash._getnative@3.9.1 │ ├── lodash.isarguments@3.1.0 │ └── lodash.isarray@3.0.4 ├── d@0.1.1 extraneous ├── font-awesome@4.7.0 ├─┬ gulp@3.9.1 │ ├── archy@1.0.0 │ ├─┬ chalk@1.1.3 │ │ ├── ansi-styles@2.2.1 │ │ ├── escape-string-regexp@1.0.5 │ │ ├─┬ has-ansi@2.0.0 │ │ │ └── ansi-regex@2.0.0 │ │ ├── strip-ansi@3.0.1 │ │ └── supports-color@2.0.0 │ ├── deprecated@0.0.1 │ ├── interpret@1.0.1 │ ├─┬ liftoff@2.3.0 │ │ ├── extend@3.0.0 │ │ ├─┬ findup-sync@0.4.3 │ │ │ ├─┬ detect-file@0.1.0 │ │ │ │ └── fs-exists-sync@0.1.0 │ │ │ ├─┬ is-glob@2.0.1 │ │ │ │ └── is-extglob@1.0.0 │ │ │ ├─┬ micromatch@2.3.11 │ │ │ │ ├─┬ arr-diff@2.0.0 │ │ │ │ │ └── arr-flatten@1.0.1 │ │ │ │ ├── array-unique@0.2.1 │ │ │ │ ├─┬ braces@1.8.5 │ │ │ │ │ ├─┬ expand-range@1.8.2 │ │ │ │ │ │ └─┬ fill-range@2.2.3 │ │ │ │ │ │ ├── is-number@2.1.0 │ │ │ │ │ │ ├─┬ isobject@2.1.0 │ │ │ │ │ │ │ └── isarray@1.0.0 │ │ │ │ │ │ ├── randomatic@1.1.5 │ │ │ │ │ │ └── repeat-string@1.6.1 │ │ │ │ │ ├── preserve@0.2.0 │ │ │ │ │ └── repeat-element@1.1.2 │ │ │ │ ├─┬ expand-brackets@0.1.5 │ │ │ │ │ └── is-posix-bracket@0.1.1 │ │ │ │ ├── extglob@0.3.2 │ │ │ │ ├── filename-regex@2.0.0 │ │ │ │ ├─┬ kind-of@3.0.4 │ │ │ │ │ └── is-buffer@1.1.4 │ │ │ │ ├── normalize-path@2.0.1 │ │ │ │ ├─┬ object.omit@2.0.1 │ │ │ │ │ ├─┬ for-own@0.1.4 │ │ │ │ │ │ └── for-in@0.1.6 │ │ │ │ │ └── is-extendable@0.1.1 │ │ │ │ ├─┬ parse-glob@3.0.4 │ │ │ │ │ ├─┬ glob-base@0.3.0 │ │ │ │ │ │ └── glob-parent@2.0.0 │ │ │ │ │ └── is-dotfile@1.0.2 │ │ │ │ └─┬ regex-cache@0.4.3 │ │ │ │ ├── is-equal-shallow@0.1.3 │ │ │ │ └── is-primitive@2.0.0 │ │ │ └─┬ resolve-dir@0.1.1 │ │ │ └─┬ global-modules@0.2.3 │ │ │ ├─┬ global-prefix@0.1.4 │ │ │ │ ├── ini@1.3.4 │ │ │ │ └── osenv@0.1.3 │ │ │ └── is-windows@0.2.0 │ │ ├─┬ fined@1.0.2 │ │ │ ├── expand-tilde@1.2.2 │ │ │ ├── lodash.assignwith@4.2.0 │ │ │ ├── lodash.isempty@4.4.0 │ │ │ ├── lodash.pick@4.4.0 │ │ │ └─┬ parse-filepath@1.0.1 │ │ │ ├─┬ is-absolute@0.2.6 │ │ │ │ └─┬ is-relative@0.2.1 │ │ │ │ └─┬ is-unc-path@0.1.1 │ │ │ │ └── unc-path-regex@0.1.2 │ │ │ ├── map-cache@0.2.2 │ │ │ └─┬ path-root@0.1.1 │ │ │ └── path-root-regex@0.1.2 │ │ ├── flagged-respawn@0.3.2 │ │ ├── lodash.isplainobject@4.0.6 │ │ ├── lodash.isstring@4.0.1 │ │ ├── lodash.mapvalues@4.6.0 │ │ ├── rechoir@0.6.2 │ │ └── resolve@1.1.7 │ ├── minimist@1.2.0 │ ├─┬ orchestrator@0.3.8 │ │ ├─┬ end-of-stream@0.1.5 │ │ │ └─┬ once@1.3.3 │ │ │ └── wrappy@1.0.2 │ │ ├── sequencify@0.0.7 │ │ └── stream-consume@0.1.0 │ ├── pretty-hrtime@1.0.3 │ ├── semver@4.3.6 │ ├── tildify@1.2.0 │ ├─┬ v8flags@2.0.11 │ │ └── user-home@1.1.1 │ └─┬ vinyl-fs@0.3.14 │ ├── defaults@1.0.3 │ ├─┬ glob-stream@3.1.18 │ │ ├─┬ glob@4.5.3 │ │ │ ├── inflight@1.0.6 │ │ │ └── minimatch@2.0.10 │ │ ├─┬ glob2base@0.0.12 │ │ │ └── find-index@0.1.1 │ │ ├── minimatch@2.0.10 │ │ ├── ordered-read-streams@0.1.0 │ │ ├─┬ through2@0.6.5 │ │ │ └── readable-stream@1.0.34 │ │ └── unique-stream@1.0.0 │ ├─┬ glob-watcher@0.0.6 │ │ └─┬ gaze@0.5.2 │ │ └─┬ globule@0.1.0 │ │ ├─┬ glob@3.1.21 │ │ │ ├── graceful-fs@1.2.3 │ │ │ └── inherits@1.0.2 │ │ ├── lodash@1.0.2 │ │ └─┬ minimatch@0.2.14 │ │ └── lru-cache@2.7.3 │ ├─┬ graceful-fs@3.0.11 │ │ └── natives@1.1.0 │ ├─┬ strip-bom@1.0.0 │ │ ├── first-chunk-stream@1.0.0 │ │ └── is-utf8@0.2.1 │ ├─┬ through2@0.6.5 │ │ └── readable-stream@1.0.34 │ └─┬ vinyl@0.4.6 │ └── clone@0.2.0 ├─┬ gulp-util@3.0.7 │ ├── array-differ@1.0.0 │ ├── array-uniq@1.0.3 │ ├── beeper@1.1.1 │ ├─┬ dateformat@1.0.12 │ │ ├── get-stdin@4.0.1 │ │ └─┬ meow@3.7.0 │ │ ├─┬ camelcase-keys@2.1.0 │ │ │ └── camelcase@2.1.1 │ │ ├─┬ loud-rejection@1.6.0 │ │ │ ├─┬ currently-unhandled@0.4.1 │ │ │ │ └── array-find-index@1.0.2 │ │ │ └── signal-exit@3.0.1 │ │ ├── map-obj@1.0.1 │ │ ├── minimist@1.2.0 │ │ ├─┬ normalize-package-data@2.3.5 │ │ │ ├── hosted-git-info@2.1.5 │ │ │ ├─┬ is-builtin-module@1.0.0 │ │ │ │ └── builtin-modules@1.1.1 │ │ │ └─┬ validate-npm-package-license@3.0.1 │ │ │ ├─┬ spdx-correct@1.0.2 │ │ │ │ └── spdx-license-ids@1.2.2 │ │ │ └── spdx-expression-parse@1.0.4 │ │ ├─┬ read-pkg-up@1.0.1 │ │ │ ├─┬ find-up@1.1.2 │ │ │ │ └── path-exists@2.1.0 │ │ │ └─┬ read-pkg@1.1.0 │ │ │ ├─┬ load-json-file@1.1.0 │ │ │ │ ├── graceful-fs@4.1.10 │ │ │ │ ├─┬ parse-json@2.2.0 │ │ │ │ │ └─┬ error-ex@1.3.0 │ │ │ │ │ └── is-arrayish@0.2.1 │ │ │ │ ├── pify@2.3.0 │ │ │ │ └── strip-bom@2.0.0 │ │ │ └── path-type@1.1.0 │ │ ├─┬ redent@1.0.0 │ │ │ ├── indent-string@2.1.0 │ │ │ └── strip-indent@1.0.1 │ │ └── trim-newlines@1.0.0 │ ├─┬ fancy-log@1.2.0 │ │ └── time-stamp@1.0.1 │ ├─┬ gulplog@1.0.0 │ │ └── glogg@1.0.0 │ ├─┬ has-gulplog@0.1.0 │ │ └── sparkles@1.0.0 │ ├── lodash._reescape@3.0.0 │ ├── lodash._reevaluate@3.0.0 │ ├── lodash._reinterpolate@3.0.0 │ ├─┬ lodash.template@3.6.2 │ │ ├── lodash._basecopy@3.0.1 │ │ ├── lodash._basetostring@3.0.1 │ │ ├── lodash._basevalues@3.0.0 │ │ ├── lodash._isiterateecall@3.0.9 │ │ ├─┬ lodash.escape@3.2.0 │ │ │ └── lodash._root@3.0.1 │ │ ├── lodash.restparam@3.6.1 │ │ └── lodash.templatesettings@3.1.1 │ ├── minimist@1.2.0 │ ├─┬ multipipe@0.1.2 │ │ └─┬ duplexer2@0.0.2 │ │ └── readable-stream@1.1.14 │ ├── object-assign@3.0.0 │ ├── replace-ext@0.0.1 │ └─┬ vinyl@0.5.3 │ ├── clone@1.0.2 │ └── clone-stats@0.0.1 ├── ismobilejs@0.4.0 ├── jquery@2.2.4 ├─┬ jsdom@9.8.3 │ ├── abab@1.0.3 │ ├── acorn@2.7.0 │ ├── acorn-globals@1.0.9 │ ├── array-equal@1.0.0 │ ├── content-type-parser@1.0.1 │ ├── cssom@0.3.1 │ ├── cssstyle@0.2.37 │ ├─┬ escodegen@1.8.1 │ │ ├── esprima@2.7.3 │ │ ├── estraverse@1.9.3 │ │ ├── esutils@2.0.2 │ │ ├─┬ optionator@0.8.2 │ │ │ ├── deep-is@0.1.3 │ │ │ ├── fast-levenshtein@2.0.5 │ │ │ ├── levn@0.3.0 │ │ │ ├── prelude-ls@1.1.2 │ │ │ ├── type-check@0.3.2 │ │ │ └── wordwrap@1.0.0 │ │ └─┬ source-map@0.2.0 │ │ └── amdefine@1.0.1 │ ├── html-encoding-sniffer@1.0.1 │ ├── iconv-lite@0.4.14 │ ├── nwmatcher@1.3.9 │ ├── parse5@1.5.1 │ ├─┬ request@2.79.0 │ │ ├── aws-sign2@0.6.0 │ │ ├── aws4@1.5.0 │ │ ├── caseless@0.11.0 │ │ ├─┬ combined-stream@1.0.5 │ │ │ └── delayed-stream@1.0.0 │ │ ├── forever-agent@0.6.1 │ │ ├─┬ form-data@2.1.2 │ │ │ └── asynckit@0.4.0 │ │ ├─┬ har-validator@2.0.6 │ │ │ ├─┬ commander@2.9.0 │ │ │ │ └── graceful-readlink@1.0.1 │ │ │ ├─┬ is-my-json-valid@2.15.0 │ │ │ │ ├── generate-function@2.0.0 │ │ │ │ ├─┬ generate-object-property@1.2.0 │ │ │ │ │ └── is-property@1.0.2 │ │ │ │ └── jsonpointer@4.0.0 │ │ │ └─┬ pinkie-promise@2.0.1 │ │ │ └── pinkie@2.0.4 │ │ ├─┬ hawk@3.1.3 │ │ │ ├── boom@2.10.1 │ │ │ ├── cryptiles@2.0.5 │ │ │ ├── hoek@2.16.3 │ │ │ └── sntp@1.0.9 │ │ ├─┬ http-signature@1.1.1 │ │ │ ├── assert-plus@0.2.0 │ │ │ ├─┬ jsprim@1.3.1 │ │ │ │ ├── extsprintf@1.0.2 │ │ │ │ ├── json-schema@0.2.3 │ │ │ │ └── verror@1.3.6 │ │ │ └─┬ sshpk@1.10.1 │ │ │ ├── asn1@0.2.3 │ │ │ ├── assert-plus@1.0.0 │ │ │ ├── bcrypt-pbkdf@1.0.0 │ │ │ ├─┬ dashdash@1.14.0 │ │ │ │ └── assert-plus@1.0.0 │ │ │ ├── ecc-jsbn@0.1.1 │ │ │ ├─┬ getpass@0.1.6 │ │ │ │ └── assert-plus@1.0.0 │ │ │ ├── jodid25519@1.0.2 │ │ │ ├── jsbn@0.1.0 │ │ │ └── tweetnacl@0.14.3 │ │ ├── is-typedarray@1.0.0 │ │ ├── isstream@0.1.2 │ │ ├── json-stringify-safe@5.0.1 │ │ ├─┬ mime-types@2.1.13 │ │ │ └── mime-db@1.25.0 │ │ ├── oauth-sign@0.8.2 │ │ ├── qs@6.3.0 │ │ ├── stringstream@0.0.5 │ │ ├── tunnel-agent@0.4.3 │ │ └── uuid@3.0.0 │ ├── sax@1.2.1 │ ├── symbol-tree@3.1.4 │ ├─┬ tough-cookie@2.3.2 │ │ └── punycode@1.4.1 │ ├── webidl-conversions@3.0.1 │ ├─┬ whatwg-encoding@1.0.1 │ │ └── iconv-lite@0.4.13 │ ├─┬ whatwg-url@3.1.0 │ │ └── tr46@0.0.3 │ └── xml-name-validator@2.0.1 ├── local-storage@1.4.2 ├── lodash@4.17.2 ├─┬ mocha@2.5.3 │ ├── commander@2.3.0 │ ├─┬ debug@2.2.0 │ │ └── ms@0.7.1 │ ├── diff@1.4.0 │ ├── escape-string-regexp@1.0.2 │ ├─┬ glob@3.2.11 │ │ ├── inherits@2.0.3 │ │ └─┬ minimatch@0.3.0 │ │ ├── lru-cache@2.7.3 │ │ └── sigmund@1.0.1 │ ├── growl@1.9.2 │ ├─┬ jade@0.26.3 │ │ ├── commander@0.6.1 │ │ └── mkdirp@0.3.0 │ ├── supports-color@1.2.0 │ └── to-iso-string@0.0.2 ├── nprogress@0.2.0 ├── plyr@1.5.20 ├─┬ postcss-cssnext@2.8.0 │ ├─┬ autoprefixer@6.5.3 │ │ ├── browserslist@1.4.0 │ │ ├── caniuse-db@1.0.30000584 │ │ ├── normalize-range@0.1.2 │ │ ├── num2fraction@1.2.2 │ │ ├─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ └── postcss-value-parser@3.3.0 │ ├─┬ caniuse-api@1.5.2 │ │ ├── browserslist@1.4.0 │ │ ├── lodash.memoize@4.1.2 │ │ ├── lodash.uniq@4.5.0 │ │ └─┬ shelljs@0.7.5 │ │ └─┬ glob@7.1.1 │ │ └── fs.realpath@1.0.0 │ ├─┬ pixrem@3.0.2 │ │ ├── browserslist@1.4.0 │ │ ├─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ └─┬ reduce-css-calc@1.3.0 │ │ └─┬ math-expression-evaluator@1.2.14 │ │ └── lodash.indexof@4.0.5 │ ├─┬ pleeease-filters@3.0.0 │ │ ├── onecolor@2.4.2 │ │ └─┬ postcss@5.2.5 │ │ └── supports-color@3.1.2 │ ├─┬ postcss@5.2.5 │ │ ├── js-base64@2.1.9 │ │ └─┬ supports-color@3.1.2 │ │ └── has-flag@1.0.0 │ ├─┬ postcss-apply@0.3.0 │ │ ├── balanced-match@0.4.2 │ │ └─┬ postcss@5.2.5 │ │ └── supports-color@3.1.2 │ ├─┬ postcss-attribute-case-insensitive@1.0.1 │ │ └─┬ postcss@5.2.5 │ │ └── supports-color@3.1.2 │ ├─┬ postcss-calc@5.3.1 │ │ ├─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ └── postcss-message-helpers@2.0.0 │ ├─┬ postcss-color-function@2.0.1 │ │ ├─┬ css-color-function@1.3.0 │ │ │ ├── balanced-match@0.1.0 │ │ │ ├─┬ color@0.11.4 │ │ │ │ └── color-convert@1.8.2 │ │ │ ├── debug@0.7.4 │ │ │ └── rgb@0.1.0 │ │ └─┬ postcss@5.2.5 │ │ └── supports-color@3.1.2 │ ├─┬ postcss-color-gray@3.0.0 │ │ ├─┬ color@0.7.3 │ │ │ ├── color-convert@0.5.3 │ │ │ └─┬ color-string@0.2.4 │ │ │ └── color-name@1.0.1 │ │ ├─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ └─┬ reduce-function-call@1.0.1 │ │ └── balanced-match@0.1.0 │ ├─┬ postcss-color-hex-alpha@2.0.0 │ │ ├─┬ color@0.10.1 │ │ │ ├── color-convert@0.5.3 │ │ │ └─┬ color-string@0.3.0 │ │ │ └── color-name@1.1.1 │ │ └─┬ postcss@5.2.5 │ │ └── supports-color@3.1.2 │ ├─┬ postcss-color-hwb@2.0.0 │ │ ├─┬ color@0.10.1 │ │ │ └── color-convert@0.5.3 │ │ └─┬ postcss@5.2.5 │ │ └── supports-color@3.1.2 │ ├─┬ postcss-color-rebeccapurple@2.0.0 │ │ ├─┬ color@0.9.0 │ │ │ └── color-convert@0.5.3 │ │ └─┬ postcss@5.2.5 │ │ └── supports-color@3.1.2 │ ├─┬ postcss-color-rgba-fallback@2.2.0 │ │ ├─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ └── rgb-hex@1.0.0 │ ├─┬ postcss-custom-media@5.0.1 │ │ └─┬ postcss@5.2.5 │ │ └── supports-color@3.1.2 │ ├─┬ postcss-custom-properties@5.0.1 │ │ ├── balanced-match@0.1.0 │ │ └─┬ postcss@5.2.5 │ │ └── supports-color@3.1.2 │ ├─┬ postcss-custom-selectors@3.0.0 │ │ ├── balanced-match@0.2.1 │ │ └─┬ postcss@5.2.5 │ │ └── supports-color@3.1.2 │ ├─┬ postcss-font-variant@2.0.1 │ │ └─┬ postcss@5.2.5 │ │ └── supports-color@3.1.2 │ ├─┬ postcss-initial@1.5.2 │ │ ├─┬ lodash.template@4.4.0 │ │ │ └── lodash.templatesettings@4.1.0 │ │ └─┬ postcss@5.2.5 │ │ └── supports-color@3.1.2 │ ├─┬ postcss-media-minmax@2.1.2 │ │ └─┬ postcss@5.2.5 │ │ └── supports-color@3.1.2 │ ├─┬ postcss-nesting@2.3.1 │ │ └─┬ postcss@5.2.5 │ │ └── supports-color@3.1.2 │ ├─┬ postcss-pseudo-class-any-link@1.0.0 │ │ ├─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ └── postcss-selector-parser@1.3.3 │ ├─┬ postcss-pseudoelements@3.0.0 │ │ └─┬ postcss@5.2.5 │ │ └── supports-color@3.1.2 │ ├─┬ postcss-replace-overflow-wrap@1.0.0 │ │ └─┬ postcss@5.2.5 │ │ └── supports-color@3.1.2 │ ├─┬ postcss-selector-matches@2.0.5 │ │ └─┬ postcss@5.2.5 │ │ └── supports-color@3.1.2 │ └─┬ postcss-selector-not@2.0.0 │ ├── balanced-match@0.2.1 │ └─┬ postcss@5.2.5 │ └── supports-color@3.1.2 ├── rangeslider.js@2.2.1 ├── rangetouch@0.0.9 ├── select@1.1.0 ├─┬ sinon@1.17.6 │ ├── formatio@1.1.1 │ ├── lolex@1.3.2 │ ├── samsam@1.1.2 │ └─┬ util@0.10.3 │ └── inherits@2.0.1 ├── sweetalert@1.1.3 ├── vue@2.0.8 ├── vue-hot-reload-api@1.3.3 ├─┬ vueify@9.3.0 │ ├─┬ cssnano@3.8.0 │ │ ├── decamelize@1.2.0 │ │ ├── defined@1.0.0 │ │ ├─┬ has@1.0.1 │ │ │ └── function-bind@1.1.0 │ │ ├─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ ├─┬ postcss-colormin@2.2.1 │ │ │ ├─┬ colormin@1.1.2 │ │ │ │ └── css-color-names@0.0.4 │ │ │ └─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ ├─┬ postcss-convert-values@2.4.1 │ │ │ └─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ ├─┬ postcss-discard-comments@2.0.4 │ │ │ └─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ ├─┬ postcss-discard-duplicates@2.0.2 │ │ │ └─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ ├─┬ postcss-discard-empty@2.1.0 │ │ │ └─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ ├─┬ postcss-discard-overridden@0.1.1 │ │ │ └─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ ├─┬ postcss-discard-unused@2.2.2 │ │ │ ├─┬ postcss@5.2.5 │ │ │ │ └── supports-color@3.1.2 │ │ │ └── uniqs@2.0.0 │ │ ├─┬ postcss-filter-plugins@2.0.2 │ │ │ ├─┬ postcss@5.2.5 │ │ │ │ └── supports-color@3.1.2 │ │ │ └─┬ uniqid@4.1.0 │ │ │ └── macaddress@0.2.8 │ │ ├─┬ postcss-merge-idents@2.1.7 │ │ │ └─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ ├─┬ postcss-merge-longhand@2.0.1 │ │ │ └─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ ├─┬ postcss-merge-rules@2.0.10 │ │ │ ├─┬ postcss@5.2.5 │ │ │ │ └── supports-color@3.1.2 │ │ │ └── vendors@1.0.1 │ │ ├─┬ postcss-minify-font-values@1.0.5 │ │ │ └─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ ├─┬ postcss-minify-gradients@1.0.5 │ │ │ └─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ ├─┬ postcss-minify-params@1.0.5 │ │ │ ├── alphanum-sort@1.0.2 │ │ │ └─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ ├─┬ postcss-minify-selectors@2.0.7 │ │ │ └─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ ├─┬ postcss-normalize-charset@1.1.1 │ │ │ └─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ ├─┬ postcss-normalize-url@3.0.7 │ │ │ ├── is-absolute-url@2.0.0 │ │ │ ├─┬ normalize-url@1.8.0 │ │ │ │ ├── prepend-http@1.0.4 │ │ │ │ ├─┬ query-string@4.2.3 │ │ │ │ │ └── strict-uri-encode@1.1.0 │ │ │ │ └─┬ sort-keys@1.1.2 │ │ │ │ └── is-plain-obj@1.1.0 │ │ │ └─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ ├─┬ postcss-ordered-values@2.2.2 │ │ │ └─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ ├─┬ postcss-reduce-idents@2.3.1 │ │ │ └─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ ├─┬ postcss-reduce-initial@1.0.0 │ │ │ └─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ ├─┬ postcss-reduce-transforms@1.0.4 │ │ │ └─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ ├─┬ postcss-svgo@2.1.5 │ │ │ ├─┬ is-svg@2.1.0 │ │ │ │ └── html-comment-regex@1.1.1 │ │ │ ├─┬ postcss@5.2.5 │ │ │ │ └── supports-color@3.1.2 │ │ │ └─┬ svgo@0.7.1 │ │ │ ├─┬ coa@1.0.1 │ │ │ │ └── q@1.4.1 │ │ │ ├── colors@1.1.2 │ │ │ ├─┬ csso@2.2.1 │ │ │ │ └── clap@1.1.1 │ │ │ ├─┬ js-yaml@3.6.1 │ │ │ │ └─┬ argparse@1.0.9 │ │ │ │ └── sprintf-js@1.0.3 │ │ │ └── whet.extend@0.9.9 │ │ ├─┬ postcss-unique-selectors@2.0.2 │ │ │ └─┬ postcss@5.2.5 │ │ │ └── supports-color@3.1.2 │ │ └─┬ postcss-zindex@2.1.1 │ │ └─┬ postcss@5.2.5 │ │ └── supports-color@3.1.2 │ ├── hash-sum@1.0.2 │ ├─┬ lru-cache@4.0.1 │ │ ├── pseudomap@1.0.2 │ │ └── yallist@2.0.0 │ ├── object-assign@4.1.0 │ ├─┬ postcss@5.2.5 │ │ └── supports-color@3.1.2 │ ├─┬ postcss-selector-parser@2.2.2 │ │ ├── flatten@1.0.2 │ │ ├── indexes-of@1.0.1 │ │ └── uniq@1.0.1 │ ├── through@2.3.8 │ ├── vue-hot-reload-api@2.0.6 │ ├─┬ vue-template-compiler@2.0.8 │ │ ├── de-indent@1.0.2 │ │ └── he@1.1.0 │ └── vue-template-es2015-compiler@1.2.4 ├── vueify-insert-css@1.0.0 └─┬ youtube-player@3.1.2 ├── load-script@1.0.0 └── sister@3.0.0 npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/chokidar/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/gulp-watch/node_modules/chokidar/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm ERR! Linux 4.4.0-31-generic npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" npm ERR! node v6.9.1 npm ERR! npm v3.10.8 npm ERR! code ELIFECYCLE npm ERR! node-sass@3.13.0 install: `node scripts/install.js` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the node-sass@3.13.0 install script 'node scripts/install.js'. npm ERR! Make sure you have the latest version of node.js and npm installed. npm ERR! If you do, this is most likely a problem with the node-sass package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node scripts/install.js npm ERR! You can get information on how to open an issue for this project with: npm ERR! npm bugs node-sass npm ERR! Or if that isn't available, you can get their info via: npm ERR! npm owner ls node-sass npm ERR! There is likely additional logging output above. npm ERR! Please include the following file with any support request: npm ERR! /var/www/hong.io/koel/npm-debug.log ``` # Result It appears the upgrade failed at another step in the process, and did not resolve.
Author
Owner

@ShenZhouHong commented on GitHub (Nov 24, 2016):

Has anyone else had the same issue? Any solutions?

<!-- gh-comment-id:262700389 --> @ShenZhouHong commented on GitHub (Nov 24, 2016): Has anyone else had the same issue? Any solutions?
Author
Owner

@gamerlv commented on GitHub (Nov 24, 2016):

Your issue explanation is very detailed, great to see!

Looking through the logs you concluded right that you have an permission issue, however it occurred in your public/css folder and not in node_modules as you though. Your Koel looks to be installed under the user www-data and you tried to update it using shen.
Additionally to that on your second attempt you've hit some bad luck and the re-installation of one dependency failed, which in turn made it fail the frontend update again.

To get things back on track you'll need to execute a few commands. Be sure to copy them precisely, some can, if used wrong, damage your system.

First, go to the folder you installed Koel in:
cd /var/www/hong.io/koel/
Clean up the failed dependency installation:
sudo rm -r node_modules
Correct the permissions in the folder:
sudo chown -Rv www-data:www-data .
Reinstall the required dependencies:
sudo -Hu www-data npm install

This last install step should also setup all frontend files, you can check this by reading the output. These two lines followed by no errors should be output:

> koel@ postinstall /var/www/hong.io/koel
> cross-env NODE_ENV=production && gulp --production

If that is not the case you can manually trigger a frontend update using the following command:
./node_modules/.bin/cross-env NODE_ENV=production && sudo -Hu www-data ./node_modules/.bin/gulp --production

<!-- gh-comment-id:262762564 --> @gamerlv commented on GitHub (Nov 24, 2016): Your issue explanation is very detailed, great to see! Looking through the logs you concluded right that you have an permission issue, however it occurred in your `public/css` folder and not in `node_modules` as you though. Your Koel looks to be installed under the user `www-data` and you tried to update it using `shen`. Additionally to that on your second attempt you've hit some bad luck and the re-installation of one dependency failed, which in turn made it fail the frontend update again. To get things back on track you'll need to execute a few commands. Be sure to copy them precisely, some can, if used wrong, damage your system. First, go to the folder you installed Koel in: `cd /var/www/hong.io/koel/` Clean up the failed dependency installation: `sudo rm -r node_modules` Correct the permissions in the folder: `sudo chown -Rv www-data:www-data .` Reinstall the required dependencies: `sudo -Hu www-data npm install` This last install step _should_ also setup all frontend files, you can check this by reading the output. These two lines followed by no errors should be output: ``` > koel@ postinstall /var/www/hong.io/koel > cross-env NODE_ENV=production && gulp --production ``` If that is not the case you can manually trigger a frontend update using the following command: `./node_modules/.bin/cross-env NODE_ENV=production && sudo -Hu www-data ./node_modules/.bin/gulp --production`
Author
Owner

@ShenZhouHong commented on GitHub (Nov 27, 2016):

Hello, @gamerlv

I've followed your instructions as you have kindly shared above, and it appears that I have encountered another error. Here's the output I have received.

shen@pattensen:~$ cd /var/www/hong.io/koel/
shen@pattensen:/var/www/hong.io/koel$ sudo rm -r node_modules/
[sudo] password for shen: 
shen@pattensen:/var/www/hong.io/koel$ sudo chown -Rv www-data:www-data .
ownership of './bootstrap/autoload.php' retained as www-data:www-data
ownership of './bootstrap/app.php' retained as www-data:www-data
ownership of './bootstrap/cache/.gitignore' retained as www-data:www-data
ownership of './bootstrap/cache/services.php' retained as www-data:www-data
ownership of './bootstrap/cache' retained as www-data:www-data
ownership of './bootstrap' retained as www-data:www-data

[>1000 lines of verbose output excluded]

ownership of './.git/objects' retained as www-data:www-data
ownership of './.git' retained as www-data:www-data
ownership of './LICENSE.md' retained as www-data:www-data
ownership of '.' retained as www-data:www-data
shen@pattensen:/var/www/hong.io/koel$ sudo -Hu www-data npm install
npm ERR! Linux 4.4.0-31-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install"
npm ERR! node v6.9.1
npm ERR! npm  v3.10.8
npm ERR! path /var/www/.npm
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir

npm ERR! Error: EACCES: permission denied, mkdir '/var/www/.npm'
npm ERR!     at Error (native)
npm ERR!  { Error: EACCES: permission denied, mkdir '/var/www/.npm'
npm ERR!     at Error (native)
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/var/www/.npm',
npm ERR!   parent: 'koel' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /var/www/hong.io/koel/npm-debug.log
shen@pattensen:/var/www/hong.io/koel$ 

Like before this also looks like a permissions issue. However, in this case, I believe I knew the solution. koel was not actually installed as the www-data user, but rather under a newly-created koel user specifically for that process. Therefore, when using `sudo -Hu www-data npm install, it (expectedly) did not work as permissions were still incorrect.

In order to solve this issue, I merely repeated your commands substituting koel for the user (which is also a group member of www-data, so I left the group unchanged).

This resulted in the expected output.

So, in summery and for future reference:

Make sure that the file and group permissions on your koel installation are correct - and that NPM has access to change and modify the files.

For future users that may be Googling the issue, here are some tips:

  • Check the output of ls -al on your koel directory. The user and group permissions should make sense.
  • If the permissions are incorrect, follow @gamerlv 's suggestion from above. You may need to change the names for your configuration.
<!-- gh-comment-id:263104015 --> @ShenZhouHong commented on GitHub (Nov 27, 2016): Hello, @gamerlv I've followed your instructions as you have kindly shared above, and it appears that I have encountered another error. Here's the output I have received. ```` shen@pattensen:~$ cd /var/www/hong.io/koel/ shen@pattensen:/var/www/hong.io/koel$ sudo rm -r node_modules/ [sudo] password for shen: shen@pattensen:/var/www/hong.io/koel$ sudo chown -Rv www-data:www-data . ownership of './bootstrap/autoload.php' retained as www-data:www-data ownership of './bootstrap/app.php' retained as www-data:www-data ownership of './bootstrap/cache/.gitignore' retained as www-data:www-data ownership of './bootstrap/cache/services.php' retained as www-data:www-data ownership of './bootstrap/cache' retained as www-data:www-data ownership of './bootstrap' retained as www-data:www-data [>1000 lines of verbose output excluded] ownership of './.git/objects' retained as www-data:www-data ownership of './.git' retained as www-data:www-data ownership of './LICENSE.md' retained as www-data:www-data ownership of '.' retained as www-data:www-data shen@pattensen:/var/www/hong.io/koel$ sudo -Hu www-data npm install npm ERR! Linux 4.4.0-31-generic npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "install" npm ERR! node v6.9.1 npm ERR! npm v3.10.8 npm ERR! path /var/www/.npm npm ERR! code EACCES npm ERR! errno -13 npm ERR! syscall mkdir npm ERR! Error: EACCES: permission denied, mkdir '/var/www/.npm' npm ERR! at Error (native) npm ERR! { Error: EACCES: permission denied, mkdir '/var/www/.npm' npm ERR! at Error (native) npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! syscall: 'mkdir', npm ERR! path: '/var/www/.npm', npm ERR! parent: 'koel' } npm ERR! npm ERR! Please try running this command again as root/Administrator. npm ERR! Please include the following file with any support request: npm ERR! /var/www/hong.io/koel/npm-debug.log shen@pattensen:/var/www/hong.io/koel$ ```` Like before this also looks like a permissions issue. However, in this case, I believe I knew the solution. koel was **not actually installed as the www-data** user, but rather under a newly-created `koel` user specifically for that process. Therefore, when using `sudo -Hu www-data npm install, it (expectedly) did not work as permissions were still incorrect. In order to solve this issue, I merely repeated your commands substituting koel for the user (which is also a group member of www-data, so I left the group unchanged). This resulted in the expected output. So, in summery and for future reference: # Make sure that the file and group permissions on your koel installation are correct - and that NPM has access to change and modify the files. For future users that may be Googling the issue, here are some tips: * Check the output of `ls -al` on your koel directory. The user and group permissions should make sense. * If the permissions are incorrect, follow @gamerlv 's suggestion from above. You may need to change the names for your configuration.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/koel-koel#343
No description provided.