child_process 方法在 Electron 上很慢

And*_*ara 6 node.js electron

我在 macOS 上构建了一个 Electron 应用程序electron-packager。最简单的形式是,该应用程序由一个按钮组成,按下该按钮即可打开一个外部程序。

child_process.execFile('open', ['-a', 'Terminal', path])
Run Code Online (Sandbox Code Playgroud)

与从终端运行应用程序相比,我观察到,运行与终端分离的应用程序(例如开始使用 Spotlight)时,上面的函数调用速度减慢了 50 倍

hello.app/Contents/MacOS/hello
Run Code Online (Sandbox Code Playgroud)

从终端启动 + 按下按钮 => 外部应用程序在 100 毫秒内打开

从 Spotlight 启动 + 按下按钮 => 外部应用程序将在 5 秒内打开

有任何提示可能是什么问题吗?

| Package           | Version  | 
| ----------------- | -------- |
| npm               | 6.4.1    |
| node              | v10.15.2 |
| electron          | 4.1.4    |
| electron-packager | 13.1.1   |
Run Code Online (Sandbox Code Playgroud)

编辑:电子 6.0.9 和电子包装器 14.0.5 的问题仍然存在

小智 1

使用spawn而不是execFile可能会更幸运:它可能更合适,因为您正在运行open命令,而不是直接执行特定文件(例如,启动应用程序)。

child_process.spawn('open', ['-a', 'Terminal', path]);
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的建议。不幸的是,所有“child_process”函数都有完全相同的问题(spawn、exec、execFile)。 (3认同)