首页 > 解决方案 > 电子产生异常

问题描述

我正在尝试从我的电子应用程序运行一些 sh,我尝试了两种方法,但我仍然在努力解决脚本无法访问时发生的 enoent 异常以及我无法在我的代码中掌握的内容

首先我的工作树如下

electron_app
           +
           +   app
           +   +   batch
           +   +   +   -process.js
           +   +   +   -run_source.sh
           +   other_folders

process.js 执行版本

    const { execFile } = require('child_process');

    cmd = './run_source.sh';

    console.log([source, m3u8_source, folder])

    const child = execFile(cmd, [source, m3u8_source, folder]);


    console.log(child);

    child.on('error', function (err) {
        console.log('stderr: <' + err + '>');
    });

    child.stdout.on('data', function (data) {
        console.log(data);
        let pid;
        if (data.search("pid=") !== -1) pid = data.substring(data.search("pid="), data.lenght);
        console.log(pid)
    });

    child.stderr.on('data', function (data) {
        console.log('stderr: <' + data + '>');
    });

    child.on('close', function (code) {
        if (code == 0)
            console.log('child process complete.');
        else
            console.log('child process exited with code ' + code);

    });

process.js 生成版本

    const process = require('child_process'); 

    var child = process.spawn(cmd,[source,m3u8_source,folder]);

    //the same code above

我的控制台记录以下内容

标准错误:错误:spawn ./run_source.sh ENOENT 子进程以代码 -2 退出

我已经 chmoded +x 我的 sh 脚本

该怎么办 ??

标签: javascriptbashelectron

解决方案


最后

const path = require('path');
const run_source = path.join(__dirname, 'run_source.sh');

像这样获得正确的 sh 路径解决了这个问题


推荐阅读