我想使用两个Go模块的功能,但是其中一个Go模块有一段时间没有更新了。原型定义可能已经分开了,当我试图第二次重新加载定义时,我会出现恐慌。我能够将恐慌转换为警告,但我仍然担心出现问题。有什么选项可以一起使用这些模块?有没有像个别的编译单元,仍然可以编织在一起
我使用的模块是fabric-gateway和fabric-sdk-go。
我想使用两个Go模块的功能,但是其中一个Go模块有一段时间没有更新了。原型定义可能已经分开了,当我试图第二次重新加载定义时,我会出现恐慌。我能够将恐慌转换为警告,但我仍然担心出现问题。有什么选项可以一起使用这些模块?有没有像个别的编译单元,仍然可以编织在一起
我使用的模块是fabric-gateway和fabric-sdk-go。
1条答案
按热度按时间e4yzc0pl1#
您遇到的问题是,旧版fabric-sdk-go API使用的是使用已弃用的github.com/golang/protobuf API构建的Fabric协议缓冲区绑定,而较新的fabric-gateway API使用的是使用较新的google.golang.org/protobuf API构建的Fabric协议缓冲区绑定。在同一应用程序中同时使用这两种API意味着您有两个绑定用于相同的Fabric协议缓冲区,这会导致protocol buffer命名空间冲突。我不知道有什么方法可以让这两个命名空间在同一个应用程序中共存。
如果您仅使用传统的fabric-sdk-go API进行链码部署或通道配置,则可以使用fabric-admin-sdk。这与fabric-gateway使用相同的protobuf绑定(实际上也在内部使用fabric-gateway),因此两者可以在同一应用程序中共存。