尝试将模型导入resolver.go的Golang gqlgen错误

溶胶蛋白:

您好,我正在与Golang交流,想尝试GraphQL而不是RESTful方法。因此,我决定使用https://github.com/99designs/gqlgen来实现它。

我遵循了入门指南,直到一切顺利,直到我粘贴了resolver.go代码。

我的文件夹结构:

├── go.mod
├── go.sum
├── gqlgen.yml               
├── graph
│   ├── generated            
│   │   └── generated.go
│   ├── model                
│   │   └── models_gen.go
│   ├── resolver.go          
│   ├── schema.graphqls      
│   └── schema.resolvers.go  
└── server.go                

我的resolver.go

package graph


import (
    "context"
    "fmt"
    "math/rand"
)

type Resolver struct {
    todos []*model.Todo
}

func (r *mutationResolver) CreateTodo(ctx context.Context, input model.NewTodo) (*model.Todo, error) {
    todo := &model.Todo{
        Text: input.Text,
        ID:   fmt.Sprintf("T%d", rand.Int()),
        User: &model.User{ID: input.UserID, Name: "user " + input.UserID},
    }
    r.todos = append(r.todos, todo)
    return todo, nil
}

func (r *queryResolver) Todos(ctx context.Context) ([]*model.Todo, error) {
    return r.todos, nil
}

显然,由于我没有导入模型,因此会引发错误。

所以我试图像这样导入它,"[MODULENAME]/graph/model"结果是:

graph/schema.resolvers.go:14:28: (*mutationResolver).CreateTodo redeclared in this block
        previous declaration at graph/resolver.go:18:6
graph/schema.resolvers.go:18:25: (*queryResolver).Todos redeclared in this block
        previous declaration at graph/resolver.go:28:6

如果我尝试 [MODULENAME]/model

它抛出了这个错误:

cannot find module providing package [MODULENAME]/model: unrecognized import path "[MODULENAME]/model": https fetch: Get "[MODULENAME]/model?go-get=1": dial tcp [MYSERVER IP]: connect: connection refused

我是Golang和通用模块中的新手。我试图解决,但莫名其妙地感到困惑。我将非常感谢您的帮助。

亲切的问候

in

您的问题是您多次声明了(*mutationResolver).CreateTodoand (*queryResolver).Todos函数。首先在graph/resolver.go文件中定义它们,然后第二次在graph/schema.resolvers.gogqlgen生成文件中定义它们

graph/schema.resolvers.go文件每次都会重新生成,并且包含所有无法从“状态”(即您的Resolver结构)或model文件夹中匹配的解析器实现

解决方案

  • 您可以轻松地从graph/schema.resolvers.go文件中删除这些声明
  • 或者只是gqlgen generate再次运行该命令,因为它将找到您的实现并将这些行从新生成的文件中删除

关于模块和导入路径的注释

您的第一个导入路径很棒,如果您的go.mod文件位于根目录中,则可以使用该yourmodulename/path/to/folder格式导入其中的所有软件包在这种情况下,yourmodulename/graph/model就是您的导入路径。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

GitHub上的Golang和gqlgen

尝试导入错误:未从“ ../module”导出“模型”

尝试将Blender JSON模型导入three.js,出现“长度”错误

尝试在Golang中导入垫片时Go不能正常工作

Go golang,语法错误:意外++,期望:

go / golang + redis打开文件过多错误

golang的“ go get”命令显示“ go:缺少Git命令”错误

golang错误:运行go get时找不到目录包

Golang MySQL错误-packet.go:33:意外的EOF

Golang Go-SQLite3无法迭代类型错误

Go,Golang:主程序的travis错误,转到get -v

Django 模型导入错误:ValueError:尝试在顶级包之外进行相对导入

Go,Golang:使用GOROOT导入外部软件包

语法错误-尝试将csv文件导入mysql shell

Golang Cgo:恐慌:运行时错误:cgo参数具有指向Go指针的Go指针

尝试将 Gqlgen 与 julienschmidt/httprouter 一起使用时找不到 404 页面

如何使用GO(golang)将SQLX结果嵌入HTML

将Go App分为多个文件以进行GoLang

golang:核心net / http包导入错误

golang编译错误:找不到导入

如何修复我的 golang 导入循环错误

尝试将刮y的蜘蛛导入django时出现导入错误

在尝试导入类模型的 Fultter 中出现错误“尝试将名称更正为现有命名参数的名称”

Go中的“ net”包导入错误

尝试导入组件但出现错误

尝试导入错误:将“react-scripts”更新到版本 2.0.0 后,“...”未从“...”错误导出

是什么原因导致客户端。调用rpc在Go(golang)中返回错误?

从Mac到Windows的Go / Golang交叉编译:致命错误:找不到“ windows.h”文件

Docker Alpine Golang Go进入code.net私有仓库错误