【问题标题】:Error while running execFileSync in packaged Electron app在打包的 Electron 应用程序中运行 execFileSync 时出错
【发布时间】:2018-11-14 13:52:18
【问题描述】:

我在 electron-packager(asar=false) 打包的电子应用程序中运行了以下代码。

const app = require(‘electron’);
const { join } = require(‘path’);
const EXEC_OPTS = {encoding: 'utf-8', shell: true};
childProcess.execFileSync(join(app.getAppPath(), 'src', 'executable') + ‘/test.sh’, [''], EXEC_OPTS);

但我什至没有得到任何错误日志..

此代码通常只能通过“electron”命令运行。 , 但是这段代码被electron packager打包后无法运行。

结构是这样的(只是写了必要的部分。)

project/src/excutable/test.sh

项目/main.js

有什么想法吗?

【问题讨论】:

  • 运行此代码时究竟会产生哪些错误?
  • 我没有收到任何错误。它运行但没有任何反应。

标签: node.js electron electron-builder electron-packager


【解决方案1】:

我认为打包后路径可能是错误的。您应该尝试在您的应用中执行console.log(app.getAppPath());(例如发送到渲染器、写入日志文件等),以仔细检查它是否指向预期的路径。

【讨论】:

  • 打包后我无法查看主进程日志。我只能查看渲染进程日志……但我认为如果路径错误,electron 会显示错误对话框。跨度>
  • 如果原因是 .sh 脚本的启动,它可能不会打印错误消息。我建议你检查路径。我还会检查你的 sh 脚本中的动态路径变量。
  • 谢谢,我试试。打包后有没有办法获取主进程的日志?
  • 这样的事情应该可以工作:“var fs = require('fs'); fs.writeFileSync('mylog.txt', app.getAppPath());
  • 我试过“fs.writeFileSync”,我得到预期的路径是“/Users/username/project/bin/project-darwin-x64/project.app/Contents/Resources/app/src /executable/test.sh”。另外,我通过上述方式确认了execFileSync结果缓冲区,但结果为空......这是什么意思......? .sh 没有被执行?无论如何,我接下来会尝试检查shell脚本中的动态路径。
猜你喜欢
  • 2018-02-13
  • 2017-02-19
  • 2017-06-29
  • 2015-09-28
  • 1970-01-01
  • 2016-08-26
  • 1970-01-01
  • 2020-02-22
  • 1970-01-01
相关资源
最近更新 更多