RTMP協議視頻直播點播平臺EasyDSS在Linux系統中以服務啓動報錯can’t evaluate field RootPath in type*struct排查

TSINGSEE青犀視頻團隊最近接到了很多關於平臺定製的項目,在EasyDSS的定製項目中,我們在Linux系統中以服務運行程序,發現程序無法啓動,並且報錯:can’t evaluate field RootPath in type*struct{*service.Config: Path string; ReloadSignal string; PIDFile string}

90.png

查看service.Config代碼如下:

var to = &struct {
   *Config
   Path string
}{
   s.Config,
   path,
}
err = s.template().Execute(f, to)

該行代碼從模板中讀取信息。模板信息如下:

const sysvScript = `#!/bin/sh
# For RedHat and cousins:
# chkconfig: - 99 01
# description: {
  
  {.Description}}
# processname: {
  
  {.RootPath}}

我們可以看到service.Config代碼中是path,而模板信息中是RootPath,這裏問題就很明顯了,是RootPath和Path不對應導致的。

關於服務的代碼,未修改過,因此還原到以前的版本,將 RootPath 全部還原爲Path。隨後重新啓動服務,則啓動成功。

91.png

我們查詢了Path 修改爲 RootPath 的原因,發現是因爲 GoLand 的使用錯誤。當在其他文件中重構 Path 時,會搜索整個項目的字符串中包含的 Path,並不僅僅修改對應的結構體。因此在使用 Refactor 時,需要確認下自己修改的僅僅是自己的字符串,防止修改過多的現象出現。

92.png

EasyDSS視頻平臺的定製涉及到很多方面,當然即便是非定製版本,也足夠大部分場景的使用了,比如景區智慧旅遊體系電梯雲物聯解決方案等,有興趣的朋友可以聯繫我們更深入瞭解或者測試。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章