使用Golang的Gin框架搭建Web服务器时遇到错误如何解决

使用Golang的Gin框架搭建Web服务器时遇到错误如何解决 大家好,Golang 论坛的成员们,

我正在用 Go 制作一个 Web 服务器,顺便说一句,这是我第一次用 Go 编码。但是当我尝试运行我制作的 Web 服务器时,我遇到了这个错误:不允许的导入循环。我不知道为什么会发生这种情况,所以非常感谢您的帮助。

package main

import (
  "github.com/gin-gonic/gin"
)

func main() {
  r := gin.Default()
  r.GET("/ping", func(c *gin.Context) {
    c.JSON(http.StatusOK, gin.H{
      "message": "pong",
    })
  })
  r.Run()
}

gitpod /workspace/coding (main) $ go run webserver.go package command-line-arguments imports github.com/gin-gonic/gin: import cycle not allowed gitpod /workspace/coding (main) $


更多关于使用Golang的Gin框架搭建Web服务器时遇到错误如何解决的实战教程也可以访问 https://www.itying.com/category-94-b0.html

8 回复

你没有提到监听的端口。

更多关于使用Golang的Gin框架搭建Web服务器时遇到错误如何解决的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


gin 默认监听 8080 端口。

发帖者遇到的问题在于编译。他们还没有进展到运行构建好的应用程序。

是的。为了安全起见,你可以分配其他端口并检查…

可能是8080端口正被其他应用程序使用。

你好,

  1. 你之前运行过 go mod init 吗?
  2. 你是否已经通过 go get github.com/gin-gonic/gin 添加了 gin 依赖?
package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{
			"message": "pong",
		})
	})
	r.Run()
}

我已经测试过这段代码,它可以正常工作。 请确保在你的代码中添加 net/http 包。

在 Postman 中访问 http://localhost:8080/ping 会返回:

{
    "message": "pong"
}

顺便说一下,我正在用Go语言制作一个Web服务器,这是我第一次用Go语言编码。

首先尝试不使用框架,并以此为基础:

package main

import (
	"fmt"
	"net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Content-Type", "text/plain")
	fmt.Fprint(w, "Hello World")
}

func main() {
	http.HandleFunc("/", handler)
	err := http.ListenAndServe(":8080", nil)
	if err != nil {
		fmt.Println("Error:", err)
	}
}

另外,我想问一下你为什么需要框架?在我看来,内置的库已经足够好了…

在线演示 hello!

这个错误是因为缺少了 net/http 包的导入。虽然 Gin 框架内部使用了 net/http,但在你的代码中直接使用了 http.StatusOK,这需要显式导入 net/http 包。

修正后的代码:

package main

import (
    "net/http"
    "github.com/gin-gonic/gin"
)

func main() {
    r := gin.Default()
    r.GET("/ping", func(c *gin.Context) {
        c.JSON(http.StatusOK, gin.H{
            "message": "pong",
        })
    })
    r.Run()
}

错误信息中的 “import cycle not allowed” 可能有些误导,实际上是因为 Go 编译器在解析依赖时发现了未解析的标识符 http.StatusOK。当编译器尝试解决这个未解析的依赖时,可能会在依赖分析过程中产生循环依赖的错觉。

确保你已经正确安装了 Gin 框架:

go get -u github.com/gin-gonic/gin

然后重新运行程序:

go run webserver.go

服务器应该会正常启动在默认的 8080 端口。你可以通过访问 http://localhost:8080/ping 来测试。

回到顶部