【发布时间】:2021-06-25 02:26:29
【问题描述】:
我有以下结构:
gateway-service
config
config.go
go.mod
go.sum
service.go
logger
logger.go
go.mod
go.sum
在config.go 我导入以下内容:
import (
"errors"
"os"
"strings"
"github.com/spf13/viper"
)
现在,顶级包很好并且可以正确导入。但是,viper 包没有。错误信息是:
could not import github.com/spf13/viper (cannot find package "github.com/spf13/viper" in any of
/Users/me/.go/src/github.com/spf13/viper (from $GOROOT)
/Users/me/go/src/github.com/spf13/viper (from $GOPATH))compiler
logger.go 文件中也会出现同样的问题:
package logger
import (
"context"
"go.uber.org/zap"
)
错误是:
could not import go.uber.org/zap (cannot find package "go.uber.org/zap" in any of
/Users/me/.go/src/go.uber.org/zap (from $GOROOT)
/Users/me/go/src/go.uber.org/zap (from $GOPATH))compiler
我试过安装:
go get github.com/spf13/viper
go get go.uber.org/zap
go mod tidy
网关服务/go.mod
module github.com/puul/gateway-service
go 1.15
require github.com/spf13/viper v1.3.2
logger/go.mod
module github.com/puul/logger
go 1.15
require (
go.uber.org/multierr v1.6.0 // indirect
go.uber.org/zap v1.16.0
)
去环境:
▶ echo $GOPATH
/Users/me/go
▶ echo $GOROOT
/Users/me/.go
在相关说明中,我很想知道是否有更简单的方法来实现这样的结构:
pkg
logger
logger.go
services
gateway
编辑
我的猜测是模块和 GOPATH 之间存在某种冲突。坦率地说,从文档中不清楚这两者是如何相互作用的。结果,自动导入在 VSCode 中似乎被破坏了。它应该从导入中给出的路径中提取,但事实并非如此。决定导入路径是核心问题。
【问题讨论】:
-
您尝试过“运行/构建”吗?我怀疑 VSCode 可能正在使用不同的“go”二进制文件或 GOPATH
-
在记录器中构建工作但在网关服务中失败
cannot find module providing package github.com/puul/logger@aclowkay -
对于此类问题,将
go version和go env的输出发布在您观察到错误的同一目录中会有所帮助。 (另请注意,go命令从其工作目录推断当前模块,因此您在哪个目录中运行命令真的很重要。)
标签: go go-modules