如何在IBM Cloud Functions操作中使用Hyperledger Fabric节点SDK包?

问题描述 投票:0回答:1

我正在尝试使用Hyperledger Fabric节点SDK包创建IBM Cloud Functions区块链node.js操作,但是我在操作中需要fabric-network包时遇到问题。

由于它是第三方软件包,似乎我需要将操作作为压缩文件上传,但是当我这样做时,我看到:

"error": "Initialization has failed due to: Error: Failed to load gRPC binary module because it was not installed for the current system\nExpected directory: node-v57-linux-x64-glibc\nFound: [node-v57-darwin-x64-unknown]\nThis problem can often be fixed by running \"npm rebuild\" on the current system"

我想创建一个如下所示的javascript操作:

'use strict'

const { X509WalletMixin, Gateway } = require('fabric-network')

async function main(params) {
  return { message: 'success' }
}

处理第三方软件包的正确方法是什么?

hyperledger-fabric openwhisk ibm-cloud-functions
1个回答
2
投票

具有本机依赖性的Node.js模块需要针对与无服务器运行时相同的平台体系结构进行编译。如果要从本地开发计算机捆绑node_modules目录,它可能不匹配。

有两种方法可以使用具有本机依赖性的库...

  1. 从平台映像中运行Docker容器中的npm install
  2. 使用预安装的库构建自定义运行时映像。

第一种方法最简单,但只能在包含所有源文件和库的zip文件小于操作大小限制(48MB)时使用。

Running npm install inside runtime container

  • 运行以下命令将本地目录绑定到运行时容器中并运行npm install
docker run -it -v $PWD:/nodejsAction openwhisk/action-nodejs-v10 "npm install"

这将留下一个node_modules文件夹,其中包含为正确运行时编译的本机依赖项。

  • 压缩动作源文件,包括node_modules目录。
zip -r action.zip *
  • 使用操作存档创建新操作。
ibmcloud wsk action create my-action --kind nodejs:10 action.zip

Building custom runtime image

  • 使用在构建期间运行的Dockerfile命令创建npm install
FROM openwhisk/action-nodejs-v10

RUN npm install fabric-network
  • 构建并将映像推送到Docker Hub。
$ docker build -t <USERNAME>/custom-runtime .
$ docker push <USERNAME>/custom-runtime
  • 使用自定义运行时映像创建新操作。
ibmcloud wsk action create my-action --docker <USERNAME>/custom-runtime action.zip

确保node_modules中包含的action.zip不包含相同的库文件。

© www.soinside.com 2019 - 2024. All rights reserved.