2016-06-23 4 views
2

Попытка запустить gradlew из nodeJS:запустить gradlew из nodejs

const spawn = require('child_process').spawn; 
const path = require('path'); 

function run() { 

    var path_dir = path.resolve('./../movies/VanillaApp/android'); 

    var options = { 
     cwd: path_dir 
    }; 

    const ls = spawn('gradlew', ['assembleRelease'], options); 

    ls.stdout.on('data', (data) => { 
     console.log(`stdout: ${data}`); 
    }); 

    ls.stderr.on('data', (data) => { 
     console.log(`stderr: ${data}`); 
    }); 

    ls.on('close', (code) => { 
     console.log(`child process exited with code ${code}`); 
    }); 

} 



module.exports = { 
    run: run 
}; 

терминал equavalent:

> ./gradlew assembleRelease 

получать:

events.js:154 
throw er; // Unhandled 'error' event 
^ 

Error: spawn gradlew ENOENT 
at exports._errnoException (util.js:856:11) 
at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32) 
at onErrorNT (internal/child_process.js:344:16) 
at _combinedTickCallback (node.js:377:13) 
at process._tickCallback (node.js:401:11) 
at Function.Module.runMain (module.js:449:11) 
at startup (node.js:141:18) 
at node.js:933:3 

UPDATE:

Мне удалось запустить с child_process.exec, но не с помощью икры.

ответ

1

Я просто наткнулся на эту проблему сам и сумел бежать gradlew с spawn помощью опции --project-dir командной строки:

var taskDone = this.async(); 

grunt.util.spawn({ 
    cmd: "my/relative/path/gradlew", 
    args: ["clean", "--project-dir", "my/relative/path"], 
    opts: { 
     stdio: "inherit" 
    } 
}, function (error, result) { 
    if (error) { 
     taskDone(false); 
    } else { 
     taskDone(); 
    } 
}); 
Смежные вопросы