我创建了revel测试套件,我使用Assertf检查错误。
t.Assertf(err == nil, "error occurred: %v", err)
我的Windows和Mac OSX都没有任何问题。但是在我的远程服务器Ubuntu 16.04中,每当出现断言错误时,我都会收到这样的错误消息。
server.go:2753: http: panic serving [::1]:44626: open /go/src/runtime/debug/stack.go: no such file or directory
goroutine 74 [running]:
net/http.(*conn).serve.func1(0xc4204a7f40)
/usr/local/go/src/net/http/server.go:1721 +0xd0
panic(0xa04ba0, 0xc4204c2f60)
/usr/local/go/src/runtime/panic.go:489 +0x2cf
github.com/revel/revel.MustReadLines(0xc420198a4c, 0x1e, 0x1, 0xc4204d2a80, 0x3e)
/go/src/github.com/revel/revel/util.go:56 +0x168
github.com/revel/revel.NewErrorFromPanic(0xa04ba0, 0xc4204c2f00, 0x0)
/go/src/github.com/revel/revel/errors.go:63 +0x25b
github.com/revel/revel.handleInvocationPanic(0xc42024e0c0, 0xa04ba0, 0xc4204c2f00)
/go/src/github.com/revel/revel/panic.go:25 +0x4d
github.com/revel/revel.PanicFilter.func1(0xc42024e0c0)
/go/src/github.com/revel/revel/panic.go:16 +0x5c
panic(0xa04ba0, 0xc4204c2f00)
/usr/local/go/src/runtime/panic.go:489 +0x2cf
github.com/revel/revel.InterceptorFilter.func1(0xc42024e0c0)
/go/src/github.com/revel/revel/intercept.go:97 +0x7d
panic(0xa04ba0, 0xc4204c2f00)
/usr/local/go/src/runtime/panic.go:489 +0x2cf
github.com/revel/revel.MustReadLines(0xc42018605a, 0x1e, 0x1, 0xc420278d10, 0xad)
/go/src/github.com/revel/revel/util.go:56 +0x168
github.com/revel/revel.NewErrorFromPanic(0x9feea0, 0xc4204d8aa0, 0xc4204d8aa0)
/go/src/github.com/revel/revel/errors.go:63 +0x25b
github.com/revel/modules/testrunner/app/controllers.TestRunner.Run.func1.1(0xaa9ba0, 0xc4204c2a80, 0x16, 0xc4204d284c, 0x15, 0xc4204d2862, 0x14, 0xc4203fac78)
/go/src/github.com/revel/modules/testrunner/app/controllers/testrunner.go:113 +0x70
panic(0x9feea0, 0xc4204d8aa0)
/usr/local/go/src/runtime/panic.go:489 +0x2cf
github.com/revel/revel/testing.(*TestSuite).Assertf(0xc4204c2a80, 0xc4203fa600, 0xac7700, 0x16, 0xc4203fa620, 0x1, 0x1)
/go/src/github.com/revel/revel/testing/testsuite.go:313 +0x87
madvrstudio/bnkjigsaw/tests.(*ReceiptValidationTest).TestValidateAppStore(0xc4204c2a80)
答案 0 :(得分:1)
断言触发了恐慌,并且恐慌过滤器失败,因为它无法找到导致错误的go代码的源文件。如果您从部署中删除了源文件,这可能会导致(恕我直言,它真的不应该),但查看代码,它正在尝试加载堆栈上显示错误的文件。
答案 1 :(得分:0)
这是由于狂欢中的错误 - https://github.com/revel/revel/issues/1287
问题是您的服务器将GOPATH设置为等于/go
,并且revel错误地将堆栈跟踪的第一帧(/usr/local/go/src/runtime/debug/stack.go:24
)标识为在GOPATH中,因为它包含/go/src
。您可以通过在服务器上手动设置/维护不同路径中不包含/go
的GOPATH来解决此问题。这也是https://hub.docker.com/_/golang/