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视频平台的定制涉及到很多方面,当然即便是非定制版本,也足够大部分场景的使用了,比如景区智慧旅游体系电梯云物联解决方案等,有兴趣的朋友可以联系我们更深入了解或者测试。

猜你喜欢

转载自blog.csdn.net/Black_3717/article/details/112323262