去插件 - "plugin was built with a different version of package"

标签 go plugins go-build

我有一个在启动时加载插件的应用程序(守护进程)。在一个子包(守护进程/接口(interface))中,我有一些接口(interface)供该程序的插件使用。

这意味着主程序也被插件导入。

我正在使用 Go 模块(用于主程序和插件)来修复版本,我可以在 go.mod 中看到它正在使用最新版本的主程序插件。

我可以很好地构建它们,但是当我加载插件时它给我一个错误提示

 panic: plugin.Open("plugins/my-plugin"): plugin was built with a different version of package daemon/interfaces

我正在使用 Go 1.12.7 构建这两个包。

最佳答案

我通过在我的插件 go.mod 文件中添加替换语句来解决这个问题

module github.com/user/plugin

go 1.12

require (
    github.com/user/daemon v1.1.1
)

replace github.com/user/daemon v1.1.1 => ../local/path/to/daemon/

当您在源代码所在的目录之外使用项目的全名构建项目时,它也会有所帮助 (go build github.com/user/project/)

Golang 存储库上有一个相关的 Github 问题 that you can find here

关于去插件 - "plugin was built with a different version of package",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57407517/

相关文章:

google-app-engine - 在 Go Lang 中为整个结构设置标签

去 1.13 : gcc-5 not in PATH

amazon-web-services - 如何在 aws-sdk-go Dynamodb QueryInput 中使用 "BETWEEN"?

go - 在 Go 中执行字节数组

grails - Grails自己的插件错误ActiveMQ

Android Studio 4.1 插件错误 : Plugin * is incompatible (supported only in IntelliJ IDEA)

python - 使用 Sphinx 编写个人网站和博客

Golang安装

go - 为什么用 vim 打开 go build 的二进制文件,我可以看到一些源代码存储库信息?