I am very new to node.js, I am trying to create a node.js script with the execution of shell script in it.
Here is the code which i have .
var spawn = require('child_process').spawn
var _ = require('underscore');
var deploySh = spawn('sh', [ 'vij.sh' ], {
cwd: process.env.HOME + '/u/qa/gv/node/scripts',
env:_.extend(process.env, { PATH: process.env.PATH + ':/usr/local/bin' })
});
and when i try to execute it, i am facing the below issue. Can anyone help me on this?
node vijay
events.js:72
throw er; // Unhandled 'error' event
^
Error: spawn ENOENT
at errnoException (child_process.js:988:11)
at Process.ChildProcess._handle.onexit (child_process.js:779:34)
2 Answers 2
spawn is complaining that it can't find 'sh', use 'bash' instead (you might also need to specify the full path to your script depending on your env setup.)
so I'd try:
spawn('bash', ['vij.sh'], ...
spawn('bash', ['/my/path/to/vij.sh'], ...
spawn('/my/path/to/vij.sh', [], ...
Comments
var spawn = require('child_process').spawn
var _ = require('underscore');
var deploySh = spawn('sh', [ 'vij.sh' ], {
// cwd: process.env.HOME + '/u/qa/gv/node/scripts',
env:_.extend(process.env, { PATH: process.env.PATH + ':/usr/local/bin' })
});
Comment cwd: line no. 4
Until now I don't know what is process.env.HOME value but this worked for me.
/bin/shinstead ofsh?shand usespawn('vij.sh')- make sure that vij.sh has#!/bin/shas the first line.