首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当函数在代码中声明但没有被调用时,请继续恐慌

当函数在代码中声明但没有被调用时,请继续恐慌
EN

Stack Overflow用户
提问于 2015-09-06 17:19:00
回答 1查看 191关注 0票数 1

上下文:https://github.com/fusspawn/tserver/blob/master/app/controllers/gorp.go

作为试图获得gorm设置的一部分,我尝试转换标准的revel/gorp示例。

然而。即使定义了Begin()、Commit()、Rollback()方法,也足以引起恐慌。

代码语言:javascript
运行
复制
   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]                                                 
   INFO  2015/09/06 17:39:14 revel.go:329: Loaded module static                                                                                       
   INFO  2015/09/06 17:39:14 revel.go:329: Loaded module testrunner                                                                                   
   INFO  2015/09/06 17:39:14 revel.go:206: Initialized Revel v0.12.0 (2015-03-25) for >= go1.3                                                        
   INFO  2015/09/06 17:39:14 main.go:30: Running revel server                                                                                         
   TRACE 2015/09/06 17:39:14 controller.go:402: Registered controller: App                                                                            
   panic: reflect: call of reflect.Value.Type on zero Value                                                                                           

   goroutine 1 [running]:                                                                                                                             
   runtime.panic(0x88cec0, 0xc21011b7a0)                                                                                                              
    /usr/lib/go/src/pkg/runtime/panic.c:266 +0xb6                                                                                              
   reflect.Value.Type(0x0, 0x0, 0x0, 0x0, 0x0)                                                                                                        
    /usr/lib/go/src/pkg/reflect/value.go:1698 +0x79                                                                                            
    github.com/revel/revel.findControllers(0x7f365698bea8, 0x9186e0, 0x0, 0x0, 0x0)                                                                    
    /home/fusspawn/go/src/github.com/revel/revel/controller.go:321 +0x25a                                                                      
    github.com/revel/revel.RegisterController(0x9172a0, 0x0, 0xc2100c4bf0,    0x2, 0x2)                                                                   
     /home/fusspawn/go/src/github.com/revel/revel/controller.go:400 +0x1f3                                                                      
    main.main()                                                                                                                                        
     /home/fusspawn/go/src/github.com/fusspawn/tserver/app/tmp/main.go:150  +0x141b                                                              
     TRACE 2015/09/06 17:39:14 controller.go:402: Registered controller:     GormController                                                                 
     TRACE 2015/09/06 17:39:14 controller.go:402: Registered controller: Static                                                                         
     TRACE 2015/09/06 17:39:14 controller.go:402: Registered controller:  TestRunner             

注释掉方法定义将停止恐慌。我似乎不明白为什么不调用这些方法(注意,revel.InterceptMethod调用被注释掉)会导致恐慌的发生:/

EN

Stack Overflow用户

回答已采纳

发布于 2015-09-06 21:23:16

根据Revel,系统通过扫描源目录在调试模式下查找任何对*Revel.Controller进行匿名嵌入的控制器。您所看到的错误是由于Revel在此控制器扫描初始化过程中进行动态反射和出错。所以现在的问题是:为什么它在扫描控制器时遇到困难?

您的代码似乎试图扩展EventStream中的控制器,Revel调试控制器-发现代码将尝试将控制器读取为控制器。但是,目前的代码正在违背对框架的期望,因为它嵌入了一个*GormController而不是一个GormController;参见管制员文件的最后一部分。

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

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

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32426216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档