go - 无法从其他项目导入本地项目:找不到提供包的模块
问题描述
我有一个名为project1
.
几个月前,我研究了project2
哪个包含名为的包engine
,我想在里面使用它project1
。
这些项目是本地的,所以我在这里阅读了如何导入本地项目并尝试过但收到错误:
Cannot resolve file `project2`
一件有趣的事情是,当我project2
在该import(..)
部分中键入名称时,Goland 将其识别为模块,但在我按下它后,我收到了无法解决的错误。
使用 Goland,我可以选择运行sync packages of 'project1'
,但是当我按下它时,我也收到了一个错误:
project1/pkg/utils imports
project2: cannot find module providing package project2
我还尝试在其中创建vendor
文件夹project1
并将整个文件夹复制粘贴到文件夹project2
下方,vendor
但它仍然没有帮助。
知道为什么它没有解决吗?
解决方案
如果您有两个项目$GOPATH
,则可以查看此示例以导入项目。
编辑:
如果您正在使用go modules
并想要导入本地模块,那么您可以使用该replace
指令。所以,基本上你必须在你go.mod
的Project1
这些行中添加:
require /$module-name-project2/$package-name v0.0.0
replace $module-name-project2/$package-name => ../$localpath-to-project2
更多信息在这里
一个简单的例子(我的两个项目都在$GOPATH
使用之外go modules
):
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
Project2
位于.../go-experiments/project2
greeter.go
:
package greeting
func English() {
println("hi, i am boo")
}
go.mod
:
module go-experiments/project2
go 1.14
推荐阅读
- c# - 在 DataInputStream Java(Android) 上读取 C# BinaryWriter int 值
- coinbase-api - 如何在 php 中正确获取所有 coinbase pro 交易
- php - 用 .htaccess 中的参数重写 url
- postgresql - 通过对特定匹配的列值字符串应用分组来获得结果的 SQL 是什么?
- ios - 是否有一种 Cocoapod/Standard 方式允许用户更改应用程序中的字体大小,就像 Swift 中的 iBooks 应用程序中的字体大小一样?
- python - 如何根据python中单元格的颜色过滤excel数据?
- symfony - Symfony 使用 gitlab-ci.yml 自动部署
- python - macOS tkinter:askopenfilename 的文件类型如何工作
- android - 任务“:app:bintrayUpload”执行失败,任务“:app:bintrayPublish”执行失败
- sql - 如何获取 assignment_status='Open' 或 assignment_status='Limited' 且应用了 'assignment_limited_threshold' 值的用户?