該賞金過期7天。此問題的答案有資格獲得 250聲望獎勵。 JShoe想提請大家注意這個問題:
發布時我并沒有完全理解我的問題的性質,并且隨著我更新了我的代碼和這個問題,答案最終不相關。
我正在處理一個涉及在 kiosk 模式下運行節點服務器的 raspberry pi 專案。
我正在使用BROWSER=none在服務器運行時禁止本地主機的默認打開。
我想我應該能夠用來wait-on強制運行 kiosk 模式的 bash 腳本等待服務器完全啟動。我會使用這樣的東西嗎?
"scripts": {
...
"kiosk": "concurrently -n \"npm start\" \"wait-on http://localhost:3000 & /home/pi/kiosk.sh\""
},
它給了我以下我不太能夠破譯的錯誤:
[npm start] server does not have extension for -dpms option
[npm start] libEGL warning: DRI2: failed to authenticate
[npm start] [1498:1498:1125/180040.467781:ERROR:gpu_init.cc(441)] Passthrough is not supported, GL is egl
[npm start] [1498:1498:1125/180040.786918:ERROR:viz_main_impl.cc(162)] Exiting GPU process due to errors during initialization
[npm start] [1558:1558:1125/180041.392714:ERROR:gpu_init.cc(441)] Passthrough is not supported, GL is swiftshader
[npm start] [1443:1590:1125/180042.359030:ERROR:object_proxy.cc(622)] Failed to call method: org.freedesktop.DBus.Properties.Get: object_path= /org/freedesktop/UPower: org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.UPower was not provided by any .service files
[npm start] [1443:1590:1125/180042.364570:ERROR:object_proxy.cc(622)] Failed to call method: org.freedesktop.UPower.GetDisplayDevice: object_path= /org/freedesktop/UPower: org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.UPower was not provided by any .service files
[npm start] [1443:1590:1125/180042.367155:ERROR:object_proxy.cc(622)] Failed to call method: org.freedesktop.UPower.EnumerateDevices: object_path= /org/freedesktop/UPower: org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.UPower was not provided by any .service files
[npm start] Fontconfig error: Cannot load default config file: No such file: (null)
我現在意識到我的代碼中的錯誤kiosk.sh與npm命令的關系更大。這是代碼kiosk.sh:
#!/bin/bash
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
/usr/bin/chromium-browser --noerrdialogs --disable-infobars --kiosk http://localhost:3000/ &
uj5u.com熱心網友回復:
我假設您使用的是“wait-on”包(https://www.npmjs.com/package/wait-on)。使用 wait-on 命令時,前面沒有 npm。
嘗試使用
wait-on http://localhost:3000 && /home/pi/kiosk.sh
uj5u.com熱心網友回復:
一旦服務器準備好,您可以使用“child_process”npm 包來執行您的 bash 腳本。假設您在后端使用 Express.js,這應該很少修改
const exec = require('child_process');
//all your other codes and whatevers
app.listen(3000, () => {
var kiosk = exec('sh kiosk.sh',
(error, stdout, stderr) => {
if (error) {
console.log(`exec error: ${error}`);
}
});
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/368388.html
上一篇:bash對目錄中的所有檔案對不同的檔案型別執行不同的操作
下一篇:將bash管道轉換為帶引數的函式
