如何解决导入本地 Go 模块时“找不到路径 X 的模块”?

在我的 Go 项目中,我想将一些通用功能分解为一个 Go 模块,与主项目分开。为了与 go 的未来保持一致,我在 GOPATH 之外做这件事。我不想在 GitHub 或其他任何地方发布该模块。

我将此模块导入主项目的所有尝试都会导致:

cannot find module for path X

go mod init X我在模块的文件夹中运行。其文件内容go.mod为:

module X

构建或安装此模块似乎没有任何作用。我在里面没有发现它的迹象$GOPATH/pgk/mod

我尝试了多种导入语句:

帮助!


慕哥6287543
浏览 207回答 5
5回答

幕布斯6054654

所以你写了一个 Go“库”模块,X它:你不想在 GitHub 或其他地方发布你想在你的项目中导入和使用(“主”模块)。replace与指令一起使用require在您的主模块中go.mod,添加以下行:require "X" v0.0.0 replace "X" v0.0.0 => "{local path to the X module}"该路径应指向X. 它可以是绝对的或相对的。从模块X导入包util:import "X/util"(您不导入模块。您从模块导入包。)

慕标琳琳

如果您不想使用 Go 模块,则不需要。从 Go v1.13 开始,默认使用 go modules。因此,如果您不想这样做,则需要明确告知。例子:主要去:package mainimport (    "fmt"    "./pakk")func main() {    fmt.Println("Hello" + pakk.World())}包/pack.go:package pakkfunc World() string {    return " world"}在这种情况下,运行go run main.go将输出build command-line-arguments: cannot find module for path .../pakk但正在运行GO111MODULE=off go run main.go将输出Hello world

喵喔喔

花了 4 天时间弄明白了。非常失望,但是 import ./X 的方式如下:首先发出这个神奇的命令:go mod init poop/strawberry/monkey然后你可以轻松导入你的 ./X 文件夹:import  ("poop/strawberry/monkey/X")文件夹结构:./X/X.go./main.go./go.mod go.mod 的内容:module poop/strawberry/monkey这是 go 模块创建者的绝妙解决方案https://go.dev/ref/mod#go-mod-initmodule path: A path that identifies a module and acts as a prefix for package import paths within the module. For example, "golang.org/x/net"

MM们

错误 ? Go 无法解析模块的路径,这可能是由于错误配置或(未配置)用于项目依赖项跟踪的“go.mod”文件造成的。解决方案 假设您的项目文件夹如下所示;/ |-- folderOne/ |-- folderTwo/ |-- folderThree/ |-- main.go And the main.go script imports the modules  folderOne,folderTwo and folderFour's script (folderfour.go) imports the module folderThree.        folderOne:    execute in the commandline:go mod init github.com/../folderOne (i.e path from github.com folder to folderOnes)    The go mod init command creates a go.mod file to track your code's dependencies        folderTwo:    execute in the commandline:go mod init github.com/../folderTwo (i.e path from github.com folder to folderTwos)    The go mod init command creates a go.mod file to track your code's dependencies        folderThree:    execute in the commandline:go mod init github.com/../folderThree (i.e path from github.com folder to folderThrees)    The go mod init command creates a go.mod file to track your code's dependencies        folderFour:    execute in the commandline: go mod init github.com/../folderThree (i.e path from github.com folder to folderFour)    Go to the folderFours script and import the module folderThree i.e     import "github.com/../folderThree"        in folderfours commandline: $ go mod edit -replace github.com/{pathto}/folderThree=./folderThree**        then execute: go mod tidy        in your projects root folder execute the command: go mod init github.com/../ProjectRootDirectory (i.e path from github.com folder to ProjectRootDirectory)        then to import the modules, i.e folderThree, folderTwo, folderOne    execute the following at the projects root folder(ie folder with main.go)$ go mod edit -replace github.com/{pathto}/folderOne=./folderOne$ go mod edit -replace github.com/{pathto}/folderTwo=./folderTwo$ go mod edit -replace github.com/{pathto}/folderFour=./folderFour    then execute;$ go mod tidyand then$ go run main.go

哔哔one

去 mod init api.com// "api.com" 命名您的应用程序,它类似于 swift 的包标识符,您也可以 "whatever.youlike"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go