首页 > 后端开发 > Golang > 为什么我的 Go 项目出现'package XXX is not in GOROOT”错误?

为什么我的 Go 项目出现'package XXX is not in GOROOT”错误?

Susan Sarandon
发布: 2024-12-19 00:11:10
原创
967 人浏览过

Why Am I Getting the

Go 项目中出现“package XXX is not in GOROOT”错误

当尝试构建或运行 Go 项目并遇到以下场景时,经常会出现此错误:

  • 该项目的结构如下如下:

    src/
    |--project
       |--game
           |--entity
               |--whatever.go
           |--game_stuff.go
       |--server
    登录后复制
  • GOROOT 设置为正确的路径(例如 C:Go)。

原因

在 Go 的最新版本中(1.13 后),不再需要设置 GOPATH 和 GOBIN 等环境变量。相反,项目的根目录应包含一个 go.mod 文件,该文件将其表示为 Go 模块。

解决方案

要解决此问题,请按照以下步骤操作:

  1. 创建go.mod文件:在项目根目录下,运行go mod init [remote-repo.com/username/repository].
  2. 定义主包: 在 go.mod 文件中,指定主包的包路径(例如 github.com) /yourname/calculatorv3) 及其主文件(例如 main.go)。
  3. 删除过时的环境变量:如果您之前设置了 GOPATH 和 GOBIN,请从环境配置中删除或注释掉这些行。
  4. 重新构建或运行项目:重新运行 go build 或go run 命令,现在将正确识别项目的结构并构建或运行适当的package.

示例

对于提供的示例项目结构:

  1. 在项目根目录中创建一个 go.mod 文件并包含以下内容:

    module github.com/myorg/myproject
    
    go 1.17
    
    require (
     github.com/myorg/gameutils v1.2.3
    )
    登录后复制
  2. 确保 main.go 位于project/server 目录。
  3. 删除或注释掉过时的环境变量:

    # GOPATH=$HOME/go  # Assuming previous GOPATH setting
    登录后复制
  4. 重新运行 go build -o server project/server 来构建项目。

附加说明

  • 如果项目使用外部软件包,请确保使用 go get 或 go mod tidy 安装它们。
  • 如果错误仍然存​​在,请尝试使用 go clean -modcache 清除 Go 缓存。

以上是为什么我的 Go 项目出现'package XXX is not in GOROOT”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板