android - 从 nodejs 运行 gradlew

标签 android node.js gradle child-process spawn

尝试从 nodeJS 运行 gradlew:

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
};

终端等价物:

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

更新:

我已经成功运行了 child_process.exec 但没有运行 spawn。

最佳答案

我自己偶然发现了这个问题,并设法使用 --project-dir 运行 gradlewspawn命令行选项:

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();
    }
});

关于android - 从 nodejs 运行 gradlew,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37993639/

相关文章:

javascript - 在 Firebase Cloud 函数中返回 XML

eclipse - 如何在Eclipse中使用sqlbrite和RxJava 1.x?

java - Gradle 未下载 Firebase?

java - 将 Bitmap 转换为 ByteArray,反之亦然

java - 登录后在类之间使用 session 变量 - 空对象引用

javascript - Cloud Functions (Firebase) - 通过部分加载 Firebase 模块来减少冷启动时间?

javascript - 在nodejs中使用Multipart上传文件失败

java - 为 Java Spring Boot Gradle 项目构建 Heroku Procfile

android - 更新后java.nio.file.InvalidPathException

android - 谷歌应用内错误