【发布时间】: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 >> /tmp/rc_test.txt 2>&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