树莓派Node.js服务启动后以kiosk模式打开localhost:3000报错咨询
树莓派Kiosk模式运行Node服务报错解决方法
1. 修正npm脚本逻辑
你原来的脚本中wait-on和kiosk.sh之间用了&,会导致wait-on还没完成端口检测就直接执行kiosk.sh,替换为&&保证执行顺序,修正后配置如下:
"scripts": { ... "kiosk": "concurrently -n \"server,kiosk\" \"npm start\" \"wait-on http://localhost:3000 && bash /home/pi/kiosk.sh\"" },
2. 安装缺失依赖
执行以下命令安装报错涉及的缺失组件:
sudo apt update && sudo apt install -y upower libfontconfig1 unclutter x11-xserver-utils
安装完成后启动UPower服务解决DBus相关报错:
sudo systemctl enable --now upower
3. 修正kiosk.sh脚本
- 补充图形环境变量:脚本运行时默认缺少图形界面的环境变量声明,会导致xset、chromium找不到显示服务器,需要在脚本开头添加变量声明
- 补充Chromium禁用GPU参数:树莓派对Chromium的硬件加速支持不完善,添加相关启动参数规避GPU初始化报错
修正后的完整kiosk.sh内容如下:
#!/bin/bash # 补充图形环境变量 export DISPLAY=:0 export XAUTHORITY=/home/pi/.Xauthority xset s noblank xset s off xset -dpms unclutter -root & sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' /home/pi/.config/chromium/Default/Preferences sed -i 's/"exit_type":"Crashed"/"exit_type":"Normal"/' /home/pi/.config/chromium/Default/Preferences # 添加禁用GPU相关参数 /usr/bin/chromium-browser --noerrdialogs --disable-infobars --kiosk --disable-gpu --disable-software-rasterizer --disable-features=VizDisplayCompositor http://localhost:3000/ &
4. 开机自启额外配置(如需)
如果你配置了开机自动运行该npm脚本,需要确保启动时机在图形界面加载完成后,避免环境变量加载失败。如果使用systemd配置自启,需要在service配置中添加After=graphical.target字段。
内容的提问来源于stack exchange,提问作者JShoe
相关产品推荐
相关产品推荐

