繁体   English   中英

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

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

我有一个名为project1的项目。
几个月前,我在 project2 工作,其中包含名为engineproject2 ,我想在project1中使用它。
这些项目是本地的,所以我在这里阅读了如何导入本地项目并尝试过但收到错误:

Cannot resolve file `project2`

一件有趣的事情是,当我在import(..)部分中键入 project2 的名称时, project2将其识别为模块,但在我按下它之后,我收到了无法解决的错误。

使用 Goland,我可以选择运行sync packages of 'project1'但是当我按下它时,我也收到了一个错误:

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

我还尝试在project1中创建vendor文件夹并将整个project2复制粘贴到vendor文件夹下,但它仍然没有帮助。

知道为什么它没有得到解决吗?

如果您的两个项目都在$GOPATH下,则可以查看此示例以导入项目。

编辑:如果您使用go modules并想要导入本地模块,那么您可以使用replace指令。 所以,基本上你必须在你的Project1go.mod中添加这些行:

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

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

更多信息在这里

一个简单的例子(我的两个项目都在$GOPATH之外并使用go modules ):

  1. Project1位于.../go-experiments/project1

main.go

package main

import "go-experiments/project2/greeting"

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

    greeting.English()
}

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位于.../go-experiments/project2 greeter.go
package greeting

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

go.mod

module go-experiments/project2

go 1.14

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM