TLDR
$ cd your_project_path/
$ print '// +build tools\npackage tools\nimport _ "github.com/99designs/gqlgen"' | gofmt > ./tools.go
$ echo 'package model' | gofmt > ./graph/model/doc.go
$ go get .
解释
根据快速入门指南,您应该使用生成的代码创建一个包,该代码实际上已经由您的服务器导入:
package main
import (
"log"
"net/http"
"os"
"github.com/99designs/gqlgen/graphql/handler"
"github.com/99designs/gqlgen/graphql/playground"
"your_module_name/graph"
"your_module_name/graph/generated"
)
由于your_module_name/graph/generated
没有*.go
文件,您无法启动服务器,如果您尝试,您将收到如下错误:
graph/schema.resolvers.go:10:2: no required module provides package your_module_name/graph/generated; to add it:
要生成该包,您需要执行go run github.com/99designs/gqlgen generate
,但还有另一个问题:gqlgen
生成使用另一个仍然不存在的包的代码,即your_module_name/graph/model
.
需要额外的步骤添加build
约束以indirect
在生成过程中不删除依赖项。这就是为什么有下划线 import的第一步。
如果您使用指令将任何*.go
文件放入该目录- 现在一切正常:package
$ cd your_project_path/
$ print '// +build tools\npackage tools\nimport _ "github.com/99designs/gqlgen"' | gofmt > ./tools.go
$ echo 'package model' | gofmt > ./graph/model/doc.go
$ go get .