电子包装器产生 ENOENT

Posted

技术标签:

【中文标题】电子包装器产生 ENOENT【英文标题】:electron-packager spawn ENOENT 【发布时间】:2017-12-22 06:34:26 【问题描述】:

我正在开发一个通过 gui 控制 gulp 任务的电子应用程序。您单击一个任务,它就会运行。很简单的东西。在 macOS 上,当我运行 npm start 时,它运行得很好,但是当我用电子打包器打包它时,我得到了这个错误:

Uncaught Exception:
Error: spawn gulp ENOENT
    at exports._errnoException (util.js:1022:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
    at onErrorNT (internal/child_process.js:359:16)
    at _combinedTickCallback (internal/process/next_tick.js:74:11)
    at process._tickCallback (internal/process/next_tick.js:98:9)

这是代码:

exports.runTask = (taskName, projPath) => 
    const cp = spawn('gulp', [ taskName ], cwd: projPath);
    cp.stdout.setEncoding('utf8');
    cp.stdout.on('data', data => 
        console.log(data);
        mainWindow.webContents.send('task-console-data', data);
    );

    cp.stderr.setEncoding('utf8');
    cp.stderr.on('data', data => 
        console.error(data);
        displayNotification(text: `[error] $data`);
        mainWindow.webContents.send('task-console-data', `[error] $data`);
    );

    cp.on('exit', code => 
        if (code === 0) 
          displayNotification(
            title: 'gulp',
            subtitle: 'Finished running tasks'
          );
         else if ( !code || code === null ) 
            return;
         else 
            console.error(`Exited with error code $code`);

            displayNotification(
                title: 'gulp',
                subtitle: `Exited with error code $code`,
                sound: 'Basso'
            );
        
    );
;

【问题讨论】:

【参考方案1】:

如果其他人遇到此问题,答案是更正 $PATH。 npm 上有一个包可以为你做这件事。

https://www.npmjs.com/package/fix-path

【讨论】:

以上是关于电子包装器产生 ENOENT的主要内容,如果未能解决你的问题,请参考以下文章

Sendgrid 替换包装器未按预期工作

C++ MAPI 包装器尝试在默认登录后获取发件人地址

ODF 和 ODS (OpenOffice) 的 Objective-C 包装器?

Rails 3:“field-with-errors”包装器改变了页面外观。如何避免这种情况?

C++11——— 包装器

C++11——— 包装器