Electron Framework - TypeError:无法读取未定义的属性'exec'

时间:2017-01-10 03:11:15

标签: electron

我是Electron Framework的新手,我正在尝试一个应用程序,我需要在我的应用程序中单击菜单项上启动特定软件(例如firefox)。

现在我正在尝试在Windows平台上构建应用程序(使用Windows 7)。

用例   - 包含静态内容的主页   - 顶部的应用程序菜单以“启动我的软件”作为菜单项   - 点击这个菜单项我想启动一个安装在我系统上的软件(我知道exe文件的路径)

创建和启动项目的步骤

  1. npm init(输入项目的详细信息并创建package.json)
  2. npm install electron --save-dev --verbose
  3. 创建了main.js和main.html(带标题的简单HTML文件),如下所述
  4. npm start
  5. main.js的内容如下

    const electron = require('electron');
    const app = electron.app;
    const { Menu } = require('electron');
    const BrowserWindow = electron.BrowserWindow;
    
    var childProc = electron.ChildProcess;
    var mainWindow;
    
    const menu = Menu.buildFromTemplate([
        {
            label: 'Menu',
            submenu: [{
                label: 'Launch my Software',
                click: function () {
                    var child = childProc.exec;
                    var executablePath = "<path to executable for the software>";
    
                    child(executablePath, function(err, data) {
                        if (err) {
                            console.error(err);
                            return;
                        }
                        console.log(data.toString());
                    });
                }
            }]
        }
    ]);
    Menu.setApplicationMenu(menu);
    
    function createWindow() {
        mainWindow = new BrowserWindow({
            width: 800,
            height: 600
        });
        mainWindow.loadURL('file://' + __dirname + '/main.html');
        mainWindow.setMenu(menu);
        mainWindow.on('closed', () => {
            mainWindow = null;
        });
    }
    
    app.on('ready', createWindow);
    
    app.on('activate', () => {
        if (mainWindow == null) {
            createWindow();
        }
    });
    

    在npm启动后,项目启动。但是当我点击菜单项来启动我的软件时,我收到以下错误

    未捕获的例外情况: TypeError:无法读取未定义

    的属性'exec'

    它指向的是行号。 18                 var child = childProc.exec;

    我经历了不同的帖子并尝试了这些建议,但它对我没用。任何人都可以帮忙解决这个问题。

    提前致谢。

1 个答案:

答案 0 :(得分:0)

电子没有ChildProcess方法或属性。

如果您想要exec命令,请使用;

const childProcess = require('child_process')

childProcess.exec('')