为了账号安全,请及时绑定邮箱和手机立即绑定

在代码中声明函数但未调用时会出现恐慌

在代码中声明函数但未调用时会出现恐慌

Go
holdtom 2021-11-08 10:17:51
上下文:https : //github.com/fusspawn/tserver/blob/master/app/controllers/gorp.go作为尝试进行 gorm 设置的一部分,我尝试转换标准 revel/gorp 示例。然而。即使定义了 Begin()、Commit()、Rollback() 方法也足以引起恐慌。   TRACE 2015/09/06 17:37:47 harness.go:126: Rebuild                                                                                                     INFO  2015/09/06 17:37:47 build.go:172: Cleaning dir tmp                                                                                              INFO  2015/09/06 17:37:47 build.go:172: Cleaning dir routes                                                                                           INFO  2015/09/06 17:37:47 build.go:172: Cleaning dir tmp                                                                                              INFO  2015/09/06 17:37:47 build.go:172: Cleaning dir routes                                                                                           TRACE 2015/09/06 17:37:47 build.go:151: Exec: [/usr/bin/git --git-   dir=/home/fusspawn/go/src/github.com/fusspawn/tserver/.git describe --always --   dirty]                                                                                                                                                  TRACE 2015/09/06 17:37:47 build.go:94: Exec: [/usr/bin/go build -ldflags    -X github.com/fusspawn/tserver/app.APP_VERSION "git-2588ef1" -tags  -o /ho  me/fusspawn/go/bin/revel.d/github.com/fusspawn/tserver/tserver   github.com/fusspawn/tserver/app/tmp]                                                   TRACE 2015/09/06 17:39:14 app.go:56: Exec app:   /home/fusspawn/go/bin/revel.d/github.com/fusspawn/tserver/tserver    [/home/fusspawn/go/bin/revel.d/git   hub.com/fusspawn/tserver/tserver -port=46276 -  importPath=github.com/fusspawn/tserver -runMode=dev]                                                 注释掉方法定义将停止恐慌。我似乎无法理解如何不调用这些方法(注意 revel.InterceptMethod 调用被注释掉)会使恐慌发生:/
查看完整描述

1 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

根据 Revel 文档,系统通过扫描您的源目录以查找任何匿名嵌入*Revel.Controller. 您看到的错误是由于 Revel 在此控制器扫描初始化期间进行动态反射并搞砸了。所以现在的问题是:为什么它在扫描控制器时遇到问题?

您的代码似乎试图扩展EventStream 中的控制器,Revel 调试控制器发现代码将尝试将其作为控制器读取。但是,目前的代码通过嵌入 a*GormController而不是GormController;目前违反了框架的预期。请参阅控制器文档的最后一部分。

我认为控制器发现逻辑只是因为这个而窒息。修复EventStream结构定义。

如果这确实为您解决了问题,您可能应该向 Revel 人员发送错误报告,因为您返回的错误消息非常糟糕且非本地,因为它没有提到它的名称尝试在失败时注册为控制器。


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 183 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信