缺少 go.sum 模块提供包 <package_name> 的条目

missing go.sum entry for module providing package <package_name>

使用水牛框架, 通过 buffalo new <project_name>

引导它之后

我正在尝试 运行 buffalo dev 期待看到:

project running on port 3000

但我收到的是这些错误消息

actions/app.go:4:2: missing go.sum entry for module providing package github.com/gobuffalo/buffalo (imported by sc_api/actions); to add:go get sc_api/actions

actions/app.go:13:2: missing go.sum entry for module providing package github.com/gobuffalo/mw-csrf (imported by sc_api/actions); to add: go get sc_api/actions

actions/app.go 已由 buffalo 生成,但如果您想知道错误是否与此文件中的导入语句匹配。

// app.go
package actions

import (
    "github.com/gobuffalo/buffalo"  // 1rst line
    "github.com/gobuffalo/envy"
    forcessl "github.com/gobuffalo/mw-forcessl"
    paramlogger "github.com/gobuffalo/mw-paramlogger"
    "github.com/unrolled/secure"

    "sc_api/models"

    "github.com/gobuffalo/buffalo-pop/v2/pop/popmw"
    csrf "github.com/gobuffalo/mw-csrf"  // 2nd line
    i18n "github.com/gobuffalo/mw-i18n"
    "github.com/gobuffalo/packr/v2"
)

这是什么意思?我该如何解决?

看来这个问题与 Buffalo 无关,更多的是我对 Go 总体上缺乏了解。

运行 go mod tidy 解决了问题

此命令通过 go.mod 文件来解决依赖关系:

  • 删除不需要的包
  • 下载需要的
  • 更新 go.sum

我仍然不确定这些操作中的哪一个起到了作用...但项目现在运行了。

ps: 深入explanation/correction的Go精灵就在这里

我在构建 docker 图像时遇到了同样的问题。我试过 go mod tidy 和 也 go get -t . 如此处所建议 https://github.com/golang/go/issues/44129。虽然两者都没有为我工作,但将我的 docker 构建器更新到版本 1.18 工作。