简体   繁体   English

无法从其他项目导入本地项目:找不到提供 package 的模块<package_name></package_name>

[英]Can't import local project from other project: cannot find module providing package <package_name>

I have a project I am working on named project1 .我有一个名为project1的项目。
Couple of months ago I worked on project2 which contains package named engine and I want to use it inside project1 .几个月前,我在 project2 工作,其中包含名为engineproject2 ,我想在project1中使用它。
These projects are local so I read here how to import local projects and tried it but received an error:这些项目是本地的,所以我在这里阅读了如何导入本地项目并尝试过但收到错误:

Cannot resolve file `project2`

One interesting thing is that when I type the name of project2 in the import(..) section, Goland identify it as module but after I press on it I received the error that it can't be resolve.一件有趣的事情是,当我在import(..)部分中键入 project2 的名称时, project2将其识别为模块,但在我按下它之后,我收到了无法解决的错误。

With Goland I have an option to run sync packages of 'project1' but when I pressed on it I also received an error:使用 Goland,我可以选择运行sync packages of 'project1'但是当我按下它时,我也收到了一个错误:

project1/pkg/utils imports
    project2: cannot find module providing package project2

I also tried to create vendor folder in project1 and copy-paste the whole project2 beneath the vendor folder but it still didn't help.我还尝试在project1中创建vendor文件夹并将整个project2复制粘贴到vendor文件夹下,但它仍然没有帮助。

Any idea why it doesn't being resolve?知道为什么它没有得到解决吗?

If you have both of your projects under your $GOPATH , you can check out this example for importing projects.如果您的两个项目都在$GOPATH下,则可以查看此示例以导入项目。

EDIT: If you are using go modules and want to import local modules, then you can make use of the replace directive.编辑:如果您使用go modules并想要导入本地模块,那么您可以使用replace指令。 So, basically you have to add in your go.mod of your Project1 these lines:所以,基本上你必须在你的Project1go.mod中添加这些行:

require /$module-name-project2/$package-name v0.0.0

replace $module-name-project2/$package-name => ../$localpath-to-project2

More info here更多信息在这里

A quick example (both my projects are outside of $GOPATH and using go modules ):一个简单的例子(我的两个项目都在$GOPATH之外并使用go modules ):

  1. Project1 is located under .../go-experiments/project1 Project1位于.../go-experiments/project1

main.go : main.go

package main

import "go-experiments/project2/greeting"

func main() {
    println("How to greet?")

    greeting.English()
}

go.mod : go.mod

module go-experiments/project1

require go-experiments/project2/greeting v0.0.0

replace go-experiments/project2/greeting => ../project2

go 1.14
  1. Project2 is located under .../go-experiments/project2 greeter.go : Project2位于.../go-experiments/project2 greeter.go
package greeting

func English() {
   println("hi, i am boo")
}

go.mod : go.mod

module go-experiments/project2

go 1.14

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Golang 找不到提供 package {PACKAGE_NAME} 的模块:工作目录不是模块的一部分 - Golang cannot find module providing package {PACKAGE_NAME}: working directory is not part of a module 找不到提供套件的模组 - Cannot find module providing package 缺少提供 package 的模块的 go.sum 条目<package_name></package_name> - missing go.sum entry for module providing package <package_name> 为什么 Go 在项目子目录中找不到 import package? - Why Go can't find import package in project subdirectory? 构建命令行参数:无法加载本地包:找不到提供包的模块 - build command-line-arguments: cannot load local package: cannot find module providing package 转到“找不到提供包装的模块” - “cannot find module providing for package” in go go mod:找不到提供 package 的模块 - go mod: cannot find module providing package 如何修复Go 1.11模块未知导入路径,找不到提供包的模块? - How to fix Go 1.11 module unknown import path, cannot find module providing package? Golang - 为什么我不能在GOPATH / src / project中导入本地包但可以在主目录中? - Golang - Why can't I import local package in GOPATH/src/project but can in home directory? 在 Go 语言中找不到提供 package ed25519 的模块 - Cannot find module providing package ed25519 in Go language
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM