【问题标题】:Rasbian on Raspberry Pi trying to run Electron app on startupRaspberry Pi 上的 Raspbian 尝试在启动时运行 Electron 应用程序
【发布时间】:2021-05-07 04:17:57
【问题描述】:

我正在尝试在我的 Raspberry Pi 上启动时运行一个脚本,我最终需要在所有内容加载完毕后运行 npm run start 才能启动我的 Electron 应用程序。如果我在终端中运行这个命令,它工作得很好,但是几个小时我一直在尝试使用 crontab、RC Local 和其他各种东西。

我的脚本没有运行。我可以验证我的 rc 本地文件确实在运行并且我的 sh 文件正在运行,但是 Electron 从未启动,我做错了什么?

  • 我有一个命令来执行在rc.local 中运行的脚本,即:

    • sh '/home/pi/Desktop/cockpit-tv-monitor/start.sh'
  • start.sh的内容是:

#!/bin/sh
# start-jammer.sh
# navigate to the home directory, then to this directory, then execute python script, then back home

cd /
cd home/pi/Desktop/cockpit-tv-monitor
echo "about to run npm run start" > /tmp/rc_test.txt
npm run start

我收到了回声,但npm run start 似乎永远不会启动我的电子应用程序,并且此命令本质上是运行electron . 的别名

更新 05/05 @ 09:58

我已将npm run start 的内容输出到一个简单的文本文件,使用:

  • npm run start >> /tmp/start-output.txt > 2>&1

我得到的错误是:

> cockpit-tv-monitor@1.0.0 start
> electron .

A JavaScript error occurred in the main process
Uncaught Exception:
Error: Failed to get 'appData' path
    at App.c._setDefaultAppPaths (electron/js2c/browser_init.js:5:1300)
    at Object.<anonymous> (electron/js2c/browser_init.js:197:2129)
    at Object../lib/browser/init.ts (electron/js2c/browser_init.js:197:3540)
    at __webpack_require__ (electron/js2c/browser_init.js:1:128)
    at electron/js2c/browser_init.js:1:1200
    at electron/js2c/browser_init.js:1:1267
    at NativeModule.compileForInternalLoader (internal/bootstrap/loaders.js:283:7)
    at NativeModule.compileForPublicLoader (internal/bootstrap/loaders.js:225:10)
    at loadNativeModule (internal/modules/cjs/helpers.js:35:9)
    at Module._load (internal/modules/cjs/loader.js:747:15)
/home/pi/Desktop/cockpit-tv-monitor/node_modules/electron/dist/electron exited with signal SIGSEGV

即使在运行npm run start 30s 之前添加延迟之后,仍然会出现错误。

【问题讨论】:

  • 你能用npm run start &gt;&gt; /tmp/rc_test.txt 2&gt;&amp;1获取日志吗?
  • 你能告诉我们rc.local的权限和你想运行的脚本吗?还要查看this thread 上的回复。
  • rc.local 在启动时运行,我已经通过添加一些 echos 来输出到文本文件来验证这一点。我认为这可能与rc.local 立即执行任何操作有关,因为启动到操作系统需要时间,npm run start 无法启动 Electron,因为 GUI 尚未准备好,虽然有延迟仍然不起作用 - 我会尝试输出日志,但不确定是否会起作用?
  • @Philippe 我已经将命令的日志输出到一个文件中,并且我收到了一个包含 Failed to get 'appData' path 的错误(请参阅我更新的描述以及更详细的错误)
  • 你设置了 DISPLAY 吗?你可以试试sleep 60; DISPLAY=:0 npm run start

标签: node.js linux cron raspberry-pi electron


【解决方案1】:

您是否尝试过运行它

/home/pi/.xinitrc

只需创建该文件,然后插入

cd /home/pi/Desktop/cockpit-tv-monitor && npm run start &

重启并希望最好。

【讨论】:

  • 如果希望不够,请使用sudo hope。 OP 拒绝将此作为路径,因此最好自行删除此答案或将答案降级为问题下的评论。
【解决方案2】:

错误似乎是Failed to get 'appData' path,这可能与操作系统有关。

appData 是 Electron 保存其 cookie 和其他电子运行时相关项目的地方。这可能意味着您的操作系统没有电子可以保存到的正确目录。

对于 linux(例如 Raspberry Pi),它会查找两个东西,一个是名为 $XDG_CONFIG_HOME 的环境变量,或者是这个文件 ~/.config 的东西。

你可以输出任意一个的值

echo $XDG_CONFIG_HOME

cat ~/.config

查看路径是否存在。

如果两者都不起作用,您可以更新您的 npm start 脚本并在启动时传递一个环境变量,例如 XDG_CONFIG_HOME="~/usr/electron/myapp" &amp;&amp; electron .,它会在启动前使用目录添加环境变量。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-04-11
  • 1970-01-01
  • 1970-01-01
  • 2017-03-28
  • 2021-11-23
  • 2022-12-17
  • 2015-12-23
  • 2020-06-30
相关资源
最近更新 更多