Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Error when executing scripts with pipes in parallel #99

Open
ybc37 opened this issue Jun 12, 2017 · 2 comments
Open

Error when executing scripts with pipes in parallel #99

ybc37 opened this issue Jun 12, 2017 · 2 comments

Comments

@ybc37
Copy link

ybc37 commented Jun 12, 2017

I'm using npm-run-all for scripts that build SCSS and JS (transpiling, bundling, compressing, ...). This works quite well, but when I try to execute these scripts in parallel, I occasionally run into errors.

I stripped it down and put it in a repository: https://github.com/nesmyslny/npm-script-issue

These are the scripts in package.json:

// [...]
  "scripts": {
    "build-p": "npm-run-all -pnl build:**",
    "build-s": "npm-run-all -snl build:**",
    "build:css": "node-sass in.scss | postcss --use autoprefixer -o out.css",
    "build:js": "browserify in.js -o out.js -t [ babelify --presets [ latest ] ]",
    "build:min:css": "node-sass in.scss --output-style compressed | postcss --use autoprefixer -o out.min.css",
    "build:min:js": "browserify in.js -t [ babelify --presets [ latest ] ] | uglifyjs -c > out.min.js"
  }
// [...]

Executing them sequentially works (npm run build-s). But in parallel (npm run build-p) I get, for example, that output:

[build:css    ] 
[build:css    ] > @ build:css /home/user/tmp/npm-script-issue/package.json
[build:css    ] > node-sass in.scss | postcss --use autoprefixer -o out.css 
[build:css    ] 
[build:js     ] 
[build:js     ] > @ build:js /home/user/tmp/npm-script-issue/package.json
[build:js     ] > browserify in.js -o out.js -t [ babelify --presets [ latest ] ] 
[build:js     ] 
[build:min:css] 
[build:min:css] > @ build:min:css /home/user/tmp/npm-script-issue/package.json
[build:min:css] > node-sass in.scss --output-style compressed | postcss --use autoprefixer -o out.min.css 
[build:min:css] 
[build:min:js ] 
[build:min:js ] > @ build:min:js /home/user/tmp/npm-script-issue/package.json
[build:min:js ] > browserify in.js -t [ babelify --presets [ latest ] ] | uglifyjs -c > out.min.js 
[build:min:js ] 
[build:js     ] 
[build:js     ] > @ build:js /home/user/tmp/npm-script-issue
[build:js     ] > browserify in.js -o out.js -t [ babelify --presets [ latest ] ]
[build:js     ] 
[build:css    ] 
[build:css    ] > @ build:css /home/user/tmp/npm-script-issue
[build:css    ] > node-sass in.scss | postcss --use autoprefixer -o out.css
[build:css    ] 
[build:min:css] 
[build:min:css] > @ build:min:css /home/user/tmp/npm-script-issue
[build:min:css] > node-sass in.scss --output-style compressed | postcss --use autoprefixer -o out.min.css
[build:min:css] 
[build:min:js ] 
[build:min:js ] > @ build:min:js /home/user/tmp/npm-script-issue
[build:min:js ] > browserify in.js -t [ babelify --presets [ latest ] ] | uglifyjs -c > out.min.js
[build:min:js ] 
[build:css    ] events.js:182
[build:css    ]       throw er; // Unhandled 'error' event
[build:css    ]       ^
[build:css    ] 
[build:css    ] Error: EAGAIN: resource temporarily unavailable, write
[build:css    ] ✖ Processing stdin
[build:css    ] 
[build:css    ] 
[build:css    ] ✖ Syntax Error: stdin
[build:css    ] 
[build:css    ]  [2952:3] Unclosed block
[build:css    ] 
[build:css    ]    2950 |     background-color: #31b0d5;
[build:css    ]   2951 |     border-color: #269abc; }
[build:css    ] > 2952 |   .btn-info:active, .btn-info.active,
[build:css    ]        |   ^
[build:css    ]   2953 |   .open > .btn-info.dropdown-toggle {
[build:css    ]   2954 |     color: #fff; 
[build:css    ] 
[build:css    ] 
[build:css    ] npm ERR! code ELIFECYCLE
[build:css    ] npm ERR! errno 1
[build:css    ] npm ERR! @ build:css: `node-sass in.scss | postcss --use autoprefixer -o out.css`
[build:css    ] npm ERR! Exit status 1
[build:css    ] npm ERR! 
[build:css    ] npm ERR! Failed at the @ build:css script.
[build:css    ] npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
[build:css    ] 
[build:css    ] npm ERR! A complete log of this run can be found in:
[build:css    ] npm ERR!     /home/user/.npm/_logs/2017-06-12T18_48_34_075Z-debug.log
ERROR: "build:css" exited with 1.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @ build-p: `npm-run-all -pnl build:**`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the @ build-p script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/user/.npm/_logs/2017-06-12T18_48_34_200Z-debug.log

Sometimes it works, so maybe it's even related to the performance of the machine, etc.
It doesn't make a different if I use npm or yarn; same behavior.

Can piping and/or redirection be a problem, when executing in parallel? Did I miss a limitation?

I would be grateful of for any hint 😃

@mysticatea
Copy link
Owner

mysticatea commented Jul 23, 2017

I apology that I have overlooked the notification of this issue.

Thank you for the report.
Interesting. I have not been aware of the limitation about this issue. The error message "Error: EAGAIN: resource temporarily unavailable, write\n✖ Processing stdin" indicates there is the problem around the piping in the script`. I need to investigate more.

@leggsimon
Copy link

leggsimon commented Aug 25, 2017

I'm getting this as well but I'm not using npm-run-all, I think the issue might lie with node-sass but I'm not sure what exactly is throwing the error.

Edit: Oh actually, maybe not according to this comment sass/node-sass#2075 (comment)

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

No branches or pull requests

3 participants