Ubuntu20.04下FabricV1.1.0 Fabcar运行及相关问题解决

Ubuntu20.04下FabricV1.1.0 Fabcar运行及相关问题解决

Ubuntu20.04下FabricV1.1.0 Fabcar运行及相关问题解决

说明:此指导在Ubuntu 20.04 下Fabric V2.2.0 和 V1.1.0 运行及配置说明(均可运行)基础上进行实现,建议基础不牢先看上一篇博客。

太长不看版本——要想成功运行Fabcar的4个必要条件

1. 修改fabric-samples/basic-network/内的配置文件 docker-compose.yml

将以下内容全文替换即可(细节请看1.1.4 解决方案:修改配置文件

#
# Copyright IBM Corp All Rights Reserved
#
# SPDX-License-Identifier: Apache-2.0
#
version: '2'

networks:
  basic:

services:
  ca.example.com:
    image: hyperledger/fabric-ca:latest
    environment:
      - FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
      - FABRIC_CA_SERVER_CA_NAME=ca.example.com
      - FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem
      - FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server-config/4239aa0dcd76daeeb8ba0cda701851d14504d31aad1b2ddddbac6a57365e497c_sk
    ports:
      - "7054:7054"
    command: sh -c 'fabric-ca-server start -b admin:adminpw -d'
    volumes:
      - ./crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
    container_name: ca.example.com
    networks:
      - basic

  orderer.example.com:
    container_name: orderer.example.com
    image: hyperledger/fabric-orderer:latest
    environment:
      - GODEBUG=netdns=go
      - ORDERER_GENERAL_LOGLEVEL=debug
      - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
      - ORDERER_GENERAL_GENESISMETHOD=file
      - ORDERER_GENERAL_GENESISFILE=/etc/hyperledger/configtx/genesis.block
      - ORDERER_GENERAL_LOCALMSPID=OrdererMSP
      - ORDERER_GENERAL_LOCALMSPDIR=/etc/hyperledger/msp/orderer/msp
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/orderer
    command: orderer
    ports:
      - 7050:7050
    volumes:
        - ./config/:/etc/hyperledger/configtx
        - ./crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/:/etc/hyperledger/msp/orderer
        - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/:/etc/hyperledger/msp/peerOrg1
    networks:
      - basic

  peer0.org1.example.com:
    container_name: peer0.org1.example.com
    image: hyperledger/fabric-peer:latest
    environment:
      - GODEBUG=netdns=go
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      - CORE_PEER_ID=peer0.org1.example.com
      - CORE_LOGGING_PEER=debug
      - CORE_CHAINCODE_LOGGING_LEVEL=DEBUG
      - CORE_PEER_LOCALMSPID=Org1MSP
      - CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/peer/
      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
      # # the following setting starts chaincode containers on the same
      # # bridge network as the peers
      # # https://docs.docker.com/compose/networking/
      - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${COMPOSE_PROJECT_NAME}_basic
      - CORE_LEDGER_STATE_STATEDATABASE=CouchDB
      - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb:5984
      # The CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME and CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD
      # provide the credentials for ledger to connect to CouchDB.  The username and password must
      # match the username and password set for the associated CouchDB.
      - CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME=
      - CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD=
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric
    command: peer node start
    # command: peer node start --peer-chaincodedev=true
    ports:
      - 7051:7051
      - 7053:7053
    volumes:
        - /var/run/:/host/var/run/
        - ./crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/msp/peer
        - ./crypto-config/peerOrganizations/org1.example.com/users:/etc/hyperledger/msp/users
        - ./config:/etc/hyperledger/configtx
    depends_on:
      - orderer.example.com
      - couchdb
    networks:
      - basic

  couchdb:
    container_name: couchdb
    image: hyperledger/fabric-couchdb:latest
    # Populate the COUCHDB_USER and COUCHDB_PASSWORD to set an admin user and password
    # for CouchDB.  This will prevent CouchDB from operating in an "Admin Party" mode.
    environment:
      - COUCHDB_USER=
      - COUCHDB_PASSWORD=
    ports:
      - 5984:5984
    networks:
      - basic

  cli:
    container_name: cli
    image: hyperledger/fabric-tools:latest
    tty: true
    environment:
      - GODEBUG=netdns=go
      - GOPATH=/opt/gopath
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      - CORE_LOGGING_LEVEL=DEBUG
      - CORE_PEER_ID=cli
      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
      - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
      - CORE_CHAINCODE_KEEPALIVE=10
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
    command: /bin/bash
    volumes:
        - /var/run/:/host/var/run/
        - ./../chaincode/:/opt/gopath/src/github.com/
        - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
    networks:
        - basic
    #depends_on:
    #  - orderer.example.com
    #  - peer0.org1.example.com
    #  - couchdb

2. 卸载npm和node,安装V8.9.4

#apt-get 卸载
sudo apt-get remove --purge npm
sudo apt-get remove --purge nodejs
sudo apt-get remove --purge nodejs-legacy
sudo apt-get autoremove
wget https://nodejs.org/download/release/v8.9.4/node-v8.9.4-linux-x64.tar.gz
tar -xzvf node-v8.9.4-linux-x64.tar.gz
mv node-v8.9.4-linux-x64/ /usr/local/software/node/
rm -rf /usr/local/bin/npm /usr/local/bin/node
ln -s /usr/local/software/node/bin/npm /usr/local/bin/npm
ln -s /usr/local/software/node/bin/node /usr/local/bin/node

3. 更改npm对应python版本为 2.7.9

wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar -zxvf Python-2.7.9.tgz
cd Python-2.7.9
./configure --prefix=usr/local/python-2.7.9
make
make install
python2.7.9 -V
npm config set python python2.7.9

4. 安装node-gyp 依赖

sudo apt-get update
sudo apt-get install libcairo2-dev libjpeg-dev libpango1.0-dev libgif-dev build-essential g++
sudo npm install -g node-gyp

以下为正文部分,包括所遇问题和解决思路以及解决方法:

Fabcar 案例入手

1. 直接运行startFabric.sh 文件——报错

./workspace/github.com/fabric/fabric-samples/fabcar/startFabric.sh

Error response from daemon: Container ac9a4d8e1b7e3f39d77fe3787a6a786a4a2cb005d644d0627d7097db512e3952 is not running

运行过程:

root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# ./startFabric.sh 

# don't rewrite paths for Windows Git Bash users
export MSYS_NO_PATHCONV=1

docker-compose -f docker-compose.yml down
Removing network net_basic

docker-compose -f docker-compose.yml up -d ca.example.com orderer.example.com peer0.org1.example.com couchdb
Creating network "net_basic" with the default driver
Pulling ca.example.com (hyperledger/fabric-ca:)...
latest: Pulling from hyperledger/fabric-ca
b8f262c62ec6: Pull complete
db9dbc6799b3: Pull complete
9c5c884a6020: Pull complete
370868734ec0: Pull complete
cbce57ae4cad: Pull complete
fc00299dbf2c: Pull complete
a1e42212f1ce: Pull complete
add0e148da22: Pull complete
Digest: sha256:28f50c6aa4f4642842e706d3ae6dcee181921d03bd30ab2a8b09b66e0349d92f
Status: Downloaded newer image for hyperledger/fabric-ca:latest
Creating couchdb             ... done
Creating orderer.example.com ... done
Creating ca.example.com      ... done
Creating peer0.org1.example.com ... done

# wait for Hyperledger Fabric to start
# incase of errors when running later commands, issue export FABRIC_START_TIMEOUT=<larger number>
export FABRIC_START_TIMEOUT=10
#echo ${FABRIC_START_TIMEOUT}
sleep ${FABRIC_START_TIMEOUT}

# Create the channel
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com peer channel create -o orderer.example.com:7050 -c mychannel -f /etc/hyperledger/configtx/channel.tx
Error response from daemon: Container ac9a4d8e1b7e3f39d77fe3787a6a786a4a2cb005d644d0627d7097db512e3952 is not running
1.1 问题查找:查看容器运行过程——查看容器peer节点未启动,表示peer节点出错
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samproot@The-Land-Like-as-A-Picture:/workspace/githroot@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# docker ps -a
CONTAINER ID   IMAGE                        COMMAND                  CREATED       STATUS                   PORTS                                                           NAMES
ac9a4d8e1b7e   hyperledger/fabric-peer      "peer node start"        2 hours ago   Exited (2) 2 hours ago                                                                   peer0.org1.example.com
da410dea0ea0   hyperledger/fabric-ca        "sh -c 'fabric-ca-se…"   2 hours ago   Up 2 hours               0.0.0.0:7054->7054/tcp, :::7054->7054/tcp                       ca.example.com
dda264da6e6e   hyperledger/fabric-orderer   "orderer"                2 hours ago   Up 2 hours               0.0.0.0:7050->7050/tcp, :::7050->7050/tcp                       orderer.example.com
ec63f99bb248   hyperledger/fabric-couchdb   "tini -- /docker-ent…"   2 hours ago   Up 2 hours               4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp, :::5984->5984/tcp   couchdb
1.1.1 解决问题:

查看该脚本 startFabric.sh 运行逻辑:

  1. basic-network文件夹中start.sh启动网络;
  2. 再由:docker-compose -f docker-compose.yml up -d ca.example.com orderer.example.com peer0.org1.example.com couchdb 调用对应docker容器
1.1.2 解决思路:考虑对应peer节点启动流程,准备先手动启动网络并设置好再进行下一步容器启动

参考上一篇教程Ubuntu 20.04 下Fabric V2.2.0 和 V1.1.0 运行及配置说明(均可运行)4. 1.1.0版本安装教程::先在 first-network 中进行验证。

  1. 前期工作
    4.1 网络初始化初始化完成后,按4.4 部署智能合约4.4.1 fabric 1.1 初始声明完成声明,通过命令调用:
docker-compose -f docker-compose-cli.yaml up -d
docker ps -a

结果:发现peer 处于启动状态

  1. 再在fabcar中测试命令
docker-compose -f docker-compose.yml up -d ca.example.com orderer.example.com peer0.org1.example.com couchdb

结果:发现 peer 没有启动
在这里插入图片描述

  1. 先确定声明已完成

在这里插入图片描述

在这里插入图片描述

1.1.3 解决思路:考虑配置文件

对比docker-compose.ymldocker-compose-cli.yaml
发现docker-compose-cli.yamlpeer 上调用的是base/docker-compose-base.yaml
在这里插入图片描述

对比发现,docker-compose.yml没有版本号,也没有对 上一篇教程里疑难解惑中 3. 1.1.0版本启动网络报 SIGSEGV 错误 的处理
在这里插入图片描述

  1. 先是将所需的容器ca.example.com(Ca) orderer.example.com(Order) peer0.org1.example.com(Peer) couchdb版本进行声明为latest

再次运行发现仍然peer无法启动:
在这里插入图片描述

  1. 考虑进入容器查看日志:

docker logs e5526c24374e
发现出现同样的错误:
[signal SIGSEGV: segmentation violation code=0x1 addr=0x63 pc=0x7f8a103ce259]
在这里插入图片描述

root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/basic-network# docker-compose -f docker-compose.yml up -d ca.example.com orderer.example.com peer0.org1.example.com couchdb
Creating network "net_basic" with the default driver
Creating couchdb             ... done
Creating orderer.example.com ... done
Creating ca.example.com      ... done
Creating peer0.org1.example.com ... done
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/basic-network# docker ps -a
CONTAINER ID   IMAGE                               COMMAND                  CREATED         STATUS                     PORTS                                                           NAMES
e5526c24374e   hyperledger/fabric-peer:latest      "peer node start"        4 seconds ago   Exited (2) 3 seconds ago                                                                   peer0.org1.example.com
1468cc59e562   hyperledger/fabric-orderer:latest   "orderer"                5 seconds ago   Up 3 seconds               0.0.0.0:7050->7050/tcp, :::7050->7050/tcp                       orderer.example.com
7f5fe223191b   hyperledger/fabric-couchdb:latest   "tini -- /docker-ent…"   5 seconds ago   Up 4 seconds               4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp, :::5984->5984/tcp   couchdb
c2fb4f4619ed   hyperledger/fabric-ca:latest        "sh -c 'fabric-ca-se…"   5 seconds ago   Up 3 seconds               0.0.0.0:7054->7054/tcp, :::7054->7054/tcp                       ca.example.com
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/basic-network# docker logs e5526c24374e
2022-06-02 14:15:05.778 UTC [nodeCmd] serve -> INFO 001 Starting peer:
 Version: 1.1.0
 Go version: go1.9.2
 OS/Arch: linux/amd64
 Experimental features: false
 Chaincode:
  Base Image Version: 0.4.6
  Base Docker Namespace: hyperledger
  Base Docker Label: org.hyperledger.fabric
  Docker Namespace: hyperledger

2022-06-02 14:15:05.778 UTC [ledgermgmt] initialize -> INFO 002 Initializing ledger mgmt
2022-06-02 14:15:05.778 UTC [kvledger] NewProvider -> INFO 003 Initializing ledger provider
2022-06-02 14:15:05.791 UTC [couchdb] handleRequest -> WARN 004 Retrying couchdb request in 125ms. Attempt:1  Error:Get http://couchdb:5984/: dial tcp 172.23.0.2:5984: getsockopt: connection refused
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x63 pc=0x7f8a103ce259]

runtime stack:
runtime.throw(0xf11259, 0x2a)
	/opt/go/src/runtime/panic.go:605 +0x95
runtime.sigpanic()
	/opt/go/src/runtime/signal_unix.go:351 +0x2b8

goroutine 46 [syscall, locked to thread]:
runtime.cgocall(0xbf3800, 0xc420280ac8, 0xf0fa21)
	/opt/go/src/runtime/cgocall.go:132 +0xe4 fp=0xc420280a88 sp=0xc420280a48 pc=0x4023b4
net._C2func_getaddrinfo(0x7f8a0c0008c0, 0x0, 0xc4202a6810, 0xc42013c100, 0x0, 0x0, 0x0)
	net/_obj/_cgo_gotypes.go:86 +0x5f fp=0xc420280ac8 sp=0xc420280a88 pc=0x5f893f
net.cgoLookupIPCNAME.func2(0x7f8a0c0008c0, 0x0, 0xc4202a6810, 0xc42013c100, 0x0, 0x0, 0x0)
	/opt/go/src/net/cgo_unix.go:151 +0x13f fp=0xc420280b20 sp=0xc420280ac8 pc=0x5ffedf
net.cgoLookupIPCNAME(0xc42025a054, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
	/opt/go/src/net/cgo_unix.go:151 +0x175 fp=0xc420280c18 sp=0xc420280b20 pc=0x5fa195
net.cgoLookupIP(0x1667b00, 0xc42001c090, 0xc42025a054, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
	/opt/go/src/net/cgo_unix.go:209 +0x38f fp=0xc420280d80 sp=0xc420280c18 pc=0x5fad1f
net.(*Resolver).lookupIP(0x169d370, 0x1667b00, 0xc42001c090, 0xc42025a054, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0)
	/opt/go/src/net/lookup_unix.go:95 +0x12d fp=0xc420280df8 sp=0xc420280d80 pc=0x5e59bd
net.(*Resolver).(net.lookupIP)-fm(0x1667b00, 0xc42001c090, 0xc42025a054, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0)
	/opt/go/src/net/lookup.go:187 +0x56 fp=0xc420280e58 sp=0xc420280df8 pc=0x602836
net.glob..func10(0x1667b00, 0xc42001c090, 0xc4202a40d0, 0xc42025a054, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0)
	/opt/go/src/net/hook.go:19 +0x52 fp=0xc420280eb0 sp=0xc420280e58 pc=0x5fc722
net.(*Resolver).LookupIPAddr.func1(0xc420148000, 0x1667b00, 0xc42001c090, 0x0)
	/opt/go/src/net/lookup.go:193 +0x5c fp=0xc420280f38 sp=0xc420280eb0 pc=0x5febac
internal/singleflight.(*Group).doCall(0x169d360, 0xc420196370, 0xc42025a054, 0x7, 0xc4202a6750)
	/opt/go/src/internal/singleflight/singleflight.go:93 +0x2e fp=0xc420280fb8 sp=0xc420280f38 pc=0x5c0dce
runtime.goexit()
	/opt/go/src/runtime/asm_amd64.s:2337 +0x1 fp=0xc420280fc0 sp=0xc420280fb8 pc=0x45e391
created by internal/singleflight.(*Group).DoChan
	/opt/go/src/internal/singleflight/singleflight.go:86 +0x31f

goroutine 1 [select]:
net/http.(*Transport).getConn(0xc420148000, 0xc4202a65a0, 0x0, 0xc4200169c0, 0x4, 0xc42025a054, 0xc, 0x0, 0x0, 0x4)
	/opt/go/src/net/http/transport.go:948 +0x5bf
net/http.(*Transport).RoundTrip(0xc420148000, 0xc420170500, 0xc420148000, 0xc09e4f6336ab64da, 0x8305de086)
	/opt/go/src/net/http/transport.go:400 +0x6a6
net/http.send(0xc420170400, 0x165aac0, 0xc420148000, 0xc09e4f6336ab64da, 0x8305de086, 0x169e900, 0xc42013c0f0, 0xc09e4f6336ab64da, 0xc420134e20, 0x1)
	/opt/go/src/net/http/client.go:249 +0x1a9
net/http.(*Client).send(0xc420258ff0, 0xc420170400, 0xc09e4f6336ab64da, 0x8305de086, 0x169e900, 0xc42013c0f0, 0x0, 0x1, 0x42b3c8)
	/opt/go/src/net/http/client.go:173 +0xfd
net/http.(*Client).Do(0xc420258ff0, 0xc420170400, 0x0, 0xef2cf7, 0x11)
	/opt/go/src/net/http/client.go:602 +0x28d
github.com/hyperledger/fabric/core/ledger/util/couchdb.(*CouchInstance).handleRequest(0xc4200739a0, 0xee7426, 0x3, 0xc4200169c0, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
	/opt/gopath/src/github.com/hyperledger/fabric/core/ledger/util/couchdb/couchdb.go:1598 +0x4f0
github.com/hyperledger/fabric/core/ledger/util/couchdb.(*CouchInstance).VerifyCouchConfig(0xc4200739a0, 0x0, 0x0, 0x0, 0x0)
	/opt/gopath/src/github.com/hyperledger/fabric/core/ledger/util/couchdb/couchdb.go:388 +0x200
github.com/hyperledger/fabric/core/ledger/util/couchdb.CreateCouchInstance(0xc4200180af, 0xc, 0x0, 0x0, 0x0, 0x0, 0x3, 0xa, 0x826299e00, 0xc420135498, ...)
	/opt/gopath/src/github.com/hyperledger/fabric/core/ledger/util/couchdb/couchdbutil.go:66 +0x2ec
github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/statedb/statecouchdb.NewVersionedDBProvider(0xc42000c001, 0x1669260, 0xc42000c180)
	/opt/gopath/src/github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/statedb/statecouchdb/statecouchdb.go:76 +0xc1
github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/privacyenabledstate.NewCommonStorageDBProvider(0xc42000c1c0, 0x36, 0xc4201a2060, 0x1)
	/opt/gopath/src/github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/privacyenabledstate/common_storage_db.go:38 +0x37
github.com/hyperledger/fabric/core/ledger/kvledger.NewProvider(0xe4f9e0, 0xc420211d40, 0xc4203b0c90, 0x0)
	/opt/gopath/src/github.com/hyperledger/fabric/core/ledger/kvledger/kv_ledger_provider.go:60 +0xad
github.com/hyperledger/fabric/core/ledger/ledgermgmt.initialize(0xc420258090)
	/opt/gopath/src/github.com/hyperledger/fabric/core/ledger/ledgermgmt/ledger_mgmt.go:64 +0x227
github.com/hyperledger/fabric/core/ledger/ledgermgmt.Initialize.func1()
	/opt/gopath/src/github.com/hyperledger/fabric/core/ledger/ledgermgmt/ledger_mgmt.go:52 +0x2a
sync.(*Once).Do(0x16c57f0, 0xc4201b7660)
	/opt/go/src/sync/once.go:44 +0xbe
github.com/hyperledger/fabric/core/ledger/ledgermgmt.Initialize(0xc420258090)
	/opt/gopath/src/github.com/hyperledger/fabric/core/ledger/ledgermgmt/ledger_mgmt.go:51 +0x4d
github.com/hyperledger/fabric/peer/node.serve(0x16c5708, 0x0, 0x0, 0x0, 0x0)
	/opt/gopath/src/github.com/hyperledger/fabric/peer/node/start.go:117 +0x155
github.com/hyperledger/fabric/peer/node.glob..func1(0x164ce80, 0x16c5708, 0x0, 0x0, 0x0, 0x0)
	/opt/gopath/src/github.com/hyperledger/fabric/peer/node/start.go:87 +0x3f
github.com/hyperledger/fabric/vendor/github.com/spf13/cobra.(*Command).execute(0x164ce80, 0x16c5708, 0x0, 0x0, 0x164ce80, 0x16c5708)
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/spf13/cobra/command.go:599 +0x3e8
github.com/hyperledger/fabric/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0x164d4e0, 0x11, 0xc42025acb0, 0x5)
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/spf13/cobra/command.go:689 +0x2fe
github.com/hyperledger/fabric/vendor/github.com/spf13/cobra.(*Command).Execute(0x164d4e0, 0x1a, 0xc420016055)
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/spf13/cobra/command.go:648 +0x2b
main.main()
	/opt/gopath/src/github.com/hyperledger/fabric/peer/main.go:112 +0x5e1

goroutine 34 [select]:
github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.(*DB).compactionError(0xc4202b8300)
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db_compaction.go:90 +0x119
created by github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.openDB
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db.go:139 +0x4bd

goroutine 10 [syscall]:
os/signal.signal_recv(0x0)
	/opt/go/src/runtime/sigqueue.go:131 +0xa6
os/signal.loop()
	/opt/go/src/os/signal/signal_unix.go:22 +0x22
created by os/signal.init.0
	/opt/go/src/os/signal/signal_unix.go:28 +0x41

goroutine 11 [select]:
github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/util.(*BufferPool).drain(0xc4202b48c0)
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/util/buffer_pool.go:206 +0x172
created by github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/util.NewBufferPool
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/util/buffer_pool.go:237 +0x195

goroutine 35 [select]:
github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.(*DB).mpoolDrain(0xc4202b8300)
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db_state.go:96 +0x13b
created by github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.openDB
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db.go:140 +0x4df

goroutine 36 [select]:
github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.(*DB).tCompaction(0xc4202b8300)
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db_compaction.go:804 +0x2c8
created by github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.openDB
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db.go:146 +0x65e

goroutine 37 [select]:
github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.(*DB).mCompaction(0xc4202b8300)
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db_compaction.go:751 +0x192
created by github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.openDB
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db.go:147 +0x680

goroutine 38 [select]:
github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/util.(*BufferPool).drain(0xc4202b4000)
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/util/buffer_pool.go:206 +0x172
created by github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/util.NewBufferPool
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/util/buffer_pool.go:237 +0x195

goroutine 39 [select]:
github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.(*DB).compactionError(0xc4207fe600)
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db_compaction.go:90 +0x119
created by github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.openDB
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db.go:139 +0x4bd

goroutine 40 [select]:
github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.(*DB).mpoolDrain(0xc4207fe600)
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db_state.go:96 +0x13b
created by github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.openDB
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db.go:140 +0x4df

goroutine 41 [select]:
github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.(*DB).tCompaction(0xc4207fe600)
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db_compaction.go:804 +0x2c8
created by github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.openDB
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db.go:146 +0x65e

goroutine 42 [select]:
github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.(*DB).mCompaction(0xc4207fe600)
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db_compaction.go:751 +0x192
created by github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.openDB
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db.go:147 +0x680

goroutine 43 [select]:
github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/util.(*BufferPool).drain(0xc4202b40e0)
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/util/buffer_pool.go:206 +0x172
created by github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/util.NewBufferPool
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/util/buffer_pool.go:237 +0x195

goroutine 50 [select]:
github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.(*DB).compactionError(0xc4207f0d80)
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db_compaction.go:90 +0x119
created by github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.openDB
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db.go:139 +0x4bd

goroutine 51 [select]:
github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.(*DB).mpoolDrain(0xc4207f0d80)
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db_state.go:96 +0x13b
created by github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.openDB
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db.go:140 +0x4df

goroutine 52 [select]:
github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.(*DB).tCompaction(0xc4207f0d80)
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db_compaction.go:804 +0x2c8
created by github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.openDB
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db.go:146 +0x65e

goroutine 53 [select]:
github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.(*DB).mCompaction(0xc4207f0d80)
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db_compaction.go:751 +0x192
created by github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb.openDB
	/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/syndtr/goleveldb/leveldb/db.go:147 +0x680

goroutine 44 [select]:
net/http.setRequestCancel.func3(0x0, 0xc4202a6570, 0xc42005e100, 0xc42025a050, 0xc4203ba4e0)
	/opt/go/src/net/http/client.go:320 +0x118
created by net/http.setRequestCancel
	/opt/go/src/net/http/client.go:319 +0x2bf

goroutine 45 [select]:
net.(*Resolver).LookupIPAddr(0x169d370, 0x1667b00, 0xc42001c090, 0xc42025a054, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0)
	/opt/go/src/net/lookup.go:196 +0x52b
net.(*Resolver).internetAddrList(0x169d370, 0x1667b00, 0xc42001c090, 0xee7636, 0x3, 0xc42025a054, 0xc, 0x0, 0x0, 0x0, ...)
	/opt/go/src/net/ipsock.go:293 +0x644
net.(*Resolver).resolveAddrList(0x169d370, 0x1667b00, 0xc42001c090, 0xee7b40, 0x4, 0xee7636, 0x3, 0xc42025a054, 0xc, 0x0, ...)
	/opt/go/src/net/dial.go:193 +0x594
net.(*Dialer).DialContext(0x169e8a0, 0x1667b00, 0xc42001c090, 0xee7636, 0x3, 0xc42025a054, 0xc, 0x0, 0x0, 0x0, ...)
	/opt/go/src/net/dial.go:375 +0x248
net/http.(*Transport).dial(0xc420148000, 0x1667b00, 0xc42001c090, 0xee7636, 0x3, 0xc42025a054, 0xc, 0x422023202020200a, 0x6c75616665642079, 0x6977207469202c74, ...)
	/opt/go/src/net/http/transport.go:893 +0x193
net/http.(*Transport).dialConn(0xc420148000, 0x1667b00, 0xc42001c090, 0x0, 0xc4200169c0, 0x4, 0xc42025a054, 0xc, 0x0, 0x0, ...)
	/opt/go/src/net/http/transport.go:1060 +0x1d62
net/http.(*Transport).getConn.func4(0xc420148000, 0x1667b00, 0xc42001c090, 0xc4202a66c0, 0xc4203ba540)
	/opt/go/src/net/http/transport.go:943 +0x78
created by net/http.(*Transport).getConn
	/opt/go/src/net/http/transport.go:942 +0x393
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/basic-network# ./teardown.sh 
Killing orderer.example.com ... done
Killing couchdb             ... done
Killing ca.example.com      ... done
Removing peer0.org1.example.com ... done
Removing orderer.example.com    ... done
Removing couchdb                ... done
Removing ca.example.com         ... done
Removing network net_basic
"docker rmi" requires at least 1 argument.
See 'docker rmi --help'.

Usage:  docker rmi [OPTIONS] IMAGE [IMAGE...]

Remove one or more images
1.1.4 解决方案:修改配置文件

参考上一篇博客3. 1.1.0版本启动网络报 SIGSEGV 错误 中是对三个配置文件进行修改,这次是对 docker-compose.yml 的三处地方进行修改
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.1.5 问题解决——peer节点可正常启动

再次执行

docker-compose -f docker-compose.yml up -d ca.example.com orderer.example.com peer0.org1.example.com couchdb

peer可正常启动
在这里插入图片描述

root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/basic-network# docker-compose -f docker-compose.yml up -d ca.example.com orderer.example.com peer0.org1.example.com couchdb
Creating network "net_basic" with the default driver
Creating ca.example.com      ... done
Creating couchdb             ... done
Creating orderer.example.com ... done
Creating peer0.org1.example.com ... done
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/basic-network# docker ps -a
CONTAINER ID   IMAGE                               COMMAND                  CREATED         STATUS         PORTS                                                                                  NAMES
4f4217a59f38   hyperledger/fabric-peer:latest      "peer node start"        5 seconds ago   Up 4 seconds   0.0.0.0:7051->7051/tcp, :::7051->7051/tcp, 0.0.0.0:7053->7053/tcp, :::7053->7053/tcp   peer0.org1.example.com
1a819391e690   hyperledger/fabric-ca:latest        "sh -c 'fabric-ca-se…"   6 seconds ago   Up 4 seconds   0.0.0.0:7054->7054/tcp, :::7054->7054/tcp                                              ca.example.com
05f5c917a9d2   hyperledger/fabric-orderer:latest   "orderer"                6 seconds ago   Up 4 seconds   0.0.0.0:7050->7050/tcp, :::7050->7050/tcp                                              orderer.example.com
ffefb0820e37   hyperledger/fabric-couchdb:latest   "tini -- /docker-ent…"   6 seconds ago   Up 4 seconds   4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp, :::5984->5984/tcp                          couchdb
1.2 手动启动网络——代替start.sh脚本文件

完成peer容器的启动后,通过查看start.sh 脚本文件可以确定还有声明与通道创建、节点加入:
在这里插入图片描述

一一调用命令即可:

export FABRIC_START_TIMEOUT=10
sleep ${FABRIC_START_TIMEOUT}
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com peer channel create -o orderer.example.com:7050 -c mychannel -f /etc/hyperledger/configtx/channel.tx
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com peer channel join -b mychannel.block

在这里插入图片描述
运行过程:

root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/basic-network# export FABRIC_START_TIMEOUT=10
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/basic-network# sleep ${FABRIC_START_TIMEOUT}
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/basic-network# docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com peer channel create -o orderer.example.com:7050 -c mychannel -f /etc/hyperledger/configtx/channel.tx
2022-06-02 14:50:59.483 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2022-06-02 14:50:59.496 UTC [channelCmd] InitCmdFactory -> INFO 002 Endorser and orderer connections initialized
2022-06-02 14:50:59.703 UTC [main] main -> INFO 003 Exiting.....
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/basic-network# docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com peer channel join -b mychannel.block
2022-06-02 14:51:09.398 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2022-06-02 14:51:09.455 UTC [channelCmd] executeJoin -> INFO 002 Successfully submitted proposal to join channel
2022-06-02 14:51:09.455 UTC [main] main -> INFO 003 Exiting.....
1.3 一切顺利,继续手动运行startFabric.sh中命令

完成start.sh 脚本文件中的命令后,继续查看 startFabric.sh 脚本文件内容:
在这里插入图片描述

1.3.1 调用tools完成合约初始化:——报错

在这里插入图片描述

1.3.2 原因:传入参数有误,此命令需要声明对应合约的名称-n、版本-v和路径-p

解决:加上路径声明即可

docker exec -it cli bash
echo $CORE_PEER_LOCALMSPID
export CC_SRC_PATH=github.com/fabcar/go
eer chaincode install -n fabcar -v 1.0 -p "$CC_SRC_PATH"

在这里插入图片描述
运行过程

root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples# docker exec -it cli bash
root@d34a01085ab4:/opt/gopath/src/github.com/hyperledger/fabric/peer# echo $CORE_PEER_LOCALMSPID
Org1MSP
root@d34a01085ab4:/opt/gopath/src/github.com/hyperledger/fabric/peer# export CC_SRC_PATH=github.com/fabcar/go
root@d34a01085ab4:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode install -n fabcar -v 1.0 -p "$CC_SRC_PATH"
2022-06-02 15:06:50.929 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2022-06-02 15:06:50.929 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
2022-06-02 15:06:50.929 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc
2022-06-02 15:06:50.929 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc
2022-06-02 15:06:50.929 UTC [chaincodeCmd] getChaincodeSpec -> DEBU 005 java chaincode disabled
2022-06-02 15:06:50.953 UTC [golang-platform] getCodeFromFS -> DEBU 006 getCodeFromFS github.com/fabcar/go
2022-06-02 15:06:51.035 UTC [golang-platform] func1 -> DEBU 007 Discarding GOROOT package bytes
2022-06-02 15:06:51.035 UTC [golang-platform] func1 -> DEBU 008 Discarding GOROOT package encoding/json
2022-06-02 15:06:51.035 UTC [golang-platform] func1 -> DEBU 009 Discarding GOROOT package fmt
2022-06-02 15:06:51.035 UTC [golang-platform] func1 -> DEBU 00a Discarding provided package github.com/hyperledger/fabric/core/chaincode/shim
2022-06-02 15:06:51.035 UTC [golang-platform] func1 -> DEBU 00b Discarding provided package github.com/hyperledger/fabric/protos/peer
2022-06-02 15:06:51.035 UTC [golang-platform] func1 -> DEBU 00c Discarding GOROOT package strconv
2022-06-02 15:06:51.035 UTC [golang-platform] GetDeploymentPayload -> DEBU 00d done
2022-06-02 15:06:51.036 UTC [container] WriteFileToPackage -> DEBU 00e Writing file to tarball: src/github.com/fabcar/go/fabcar.go
2022-06-02 15:06:51.036 UTC [msp/identity] Sign -> DEBU 00f Sign: plaintext: 0A9B070A5B08031A0B088BA4E3940610...F1F3DF000000FFFF06BA999800200000 
2022-06-02 15:06:51.037 UTC [msp/identity] Sign -> DEBU 010 Sign: digest: 79CEED64A1D1E2EFB937844F98D167DA193614DE57F2262F7EFF9465F49AB7DB 
2022-06-02 15:06:51.049 UTC [chaincodeCmd] install -> DEBU 011 Installed remotely response:<status:200 payload:"OK" > 
2022-06-02 15:06:51.049 UTC [main] main -> INFO 012 Exiting.....
1.4 再按顺序调用合约进行初始化与查询即可——一切顺利
peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n fabcar -v 1.0 -c '{"Args":[""]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
sleep 10
peer chaincode invoke -o orderer.example.com:7050 -C mychannel -n fabcar -c '{"function":"initLedger","Args":[""]}'

运行过程

root@d34a01085ab4:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n fabcar -v 1.0 -c '{"Args":[""]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
2022-06-02 15:07:49.700 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2022-06-02 15:07:49.700 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
2022-06-02 15:07:49.702 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc
2022-06-02 15:07:49.702 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc
2022-06-02 15:07:49.702 UTC [chaincodeCmd] getChaincodeSpec -> DEBU 005 java chaincode disabled
2022-06-02 15:07:49.703 UTC [msp/identity] Sign -> DEBU 006 Sign: plaintext: 0AA7070A6708031A0C08C5A4E3940610...324D53500A04657363630A0476736363 
2022-06-02 15:07:49.703 UTC [msp/identity] Sign -> DEBU 007 Sign: digest: 8A98B1CCA5644EA799BF681E2718DFCED56BE4F3B728FAE6CE99A8270D681DDC 
2022-06-02 15:07:55.886 UTC [msp/identity] Sign -> DEBU 008 Sign: plaintext: 0AA7070A6708031A0C08C5A4E3940610...94CDC6B08B24C12B9970C877C7459B8A 
2022-06-02 15:07:55.886 UTC [msp/identity] Sign -> DEBU 009 Sign: digest: 5FFB6882674BFBBCA3B49EE5DB6B506E8AD6B52A06E16CC6139C73F80A8A7D22 
2022-06-02 15:07:55.887 UTC [main] main -> INFO 00a Exiting.....
root@d34a01085ab4:/opt/gopath/src/github.com/hyperledger/fabric/peer# sleep 10
root@d34a01085ab4:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode invoke -o orderer.example.com:7050 -C mychannel -n fabcar -c '{"function":"initLedger","Args":[""]}'
2022-06-02 15:08:20.247 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2022-06-02 15:08:20.247 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
2022-06-02 15:08:20.248 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc
2022-06-02 15:08:20.248 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc
2022-06-02 15:08:20.248 UTC [chaincodeCmd] getChaincodeSpec -> DEBU 005 java chaincode disabled
2022-06-02 15:08:20.249 UTC [msp/identity] Sign -> DEBU 006 Sign: plaintext: 0AA8070A6808031A0B08E4A4E3940610...1A0E0A0A696E69744C65646765720A00 
2022-06-02 15:08:20.249 UTC [msp/identity] Sign -> DEBU 007 Sign: digest: E2ED32056BB6C7B421B6E219E83F042456AF36E1D7935D11FAEC8FAC72C63A86 
2022-06-02 15:08:20.254 UTC [msp/identity] Sign -> DEBU 008 Sign: plaintext: 0AA8070A6808031A0B08E4A4E3940610...266BFB9E2BEB5A4420DAEC691DFE04FF 
2022-06-02 15:08:20.254 UTC [msp/identity] Sign -> DEBU 009 Sign: digest: 27FE311869786FC718A4D5AE45B51BA8E00BE33A8915643E6BDB986E1427AB25 
2022-06-02 15:08:20.256 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> DEBU 00a ESCC invoke result: version:1 response:<status:200 message:"OK" > payload:"\n S\240\213NS\233@4\032\332 (.\033\007i\327\"*\365d\325\303\034\323\374\223\326\250\201;\347\022\267\006\n\240\006\022\205\006\n\006fabcar\022\372\005\032J\n\004CAR0\032B{\"make\":\"Toyota\",\"model\":\"Prius\",\"colour\":\"blue\",\"owner\":\"Tomoko\"}\032G\n\004CAR1\032?{\"make\":\"Ford\",\"model\":\"Mustang\",\"colour\":\"red\",\"owner\":\"Brad\"}\032N\n\004CAR2\032F{\"make\":\"Hyundai\",\"model\":\"Tucson\",\"colour\":\"green\",\"owner\":\"Jin Soo\"}\032N\n\004CAR3\032F{\"make\":\"Volkswagen\",\"model\":\"Passat\",\"colour\":\"yellow\",\"owner\":\"Max\"}\032G\n\004CAR4\032?{\"make\":\"Tesla\",\"model\":\"S\",\"colour\":\"black\",\"owner\":\"Adriana\"}\032K\n\004CAR5\032C{\"make\":\"Peugeot\",\"model\":\"205\",\"colour\":\"purple\",\"owner\":\"Michel\"}\032H\n\004CAR6\032@{\"make\":\"Chery\",\"model\":\"S22L\",\"colour\":\"white\",\"owner\":\"Aarav\"}\032H\n\004CAR7\032@{\"make\":\"Fiat\",\"model\":\"Punto\",\"colour\":\"violet\",\"owner\":\"Pari\"}\032J\n\004CAR8\032B{\"make\":\"Tata\",\"model\":\"Nano\",\"colour\":\"indigo\",\"owner\":\"Valeria\"}\032M\n\004CAR9\032E{\"make\":\"Holden\",\"model\":\"Barina\",\"colour\":\"brown\",\"owner\":\"Shotaro\"}\022\026\n\004lscc\022\016\n\014\n\006fabcar\022\002\010\001\032\003\010\310\001\"\r\022\006fabcar\032\0031.0" endorsement:<endorser:"\n\007Org1MSP\022\226\006-----BEGIN CERTIFICATE-----\nMIICGjCCAcCgAwIBAgIRAPlwF/rUZUP9mqN4wSml4iswCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwODMxMDkxNDMyWhcNMjcwODI5MDkxNDMy\nWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjAub3JnMS5leGFtcGxlLmNvbTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABHihxW6ks3B2+5XdbAVq3CBgxRRRZ22x\nzzpqnD86nKkz7fBElBuhlXl2K6rTxyY2OBOB0ts8keqZ93xueRGymrajTTBLMA4G\nA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIEI5qg3Ndtru\nuLoM2nAYUdFFBNMarRst3dusalc2Xkl8MAoGCCqGSM49BAMCA0gAMEUCIQD4j0Rn\ne1rrd0FSCzsR6u+IuuPK5dI/kR/bh7+VLf0TNgIgCfUtkJvfvzVEwZLFoFyjoHtr\ntvwzNUS1U0hEqIaDeo4=\n-----END CERTIFICATE-----\n" signature:"0D\002 W\364]:|\333\235\257A\305\340f\003s#\341=\276\022\003\347\2655j\354\274\315\373\007\360\361\216\002 \026\264\0332u\241T\311\035\227\346\262\370\017*\322&k\373\236+\353ZD \332\354i\035\376\004\377" > 
2022-06-02 15:08:20.256 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 00b Chaincode invoke successful. result: status:200 
2022-06-02 15:08:20.256 UTC [main] main -> INFO 00c Exiting.....
1.5 手动关闭网络

先基于 basic-network/stop.sh 停止容器,再 basic-network/teardown.sh 删除容器

1.5.1 存在问题:停止容器后出现ca无法删除
1.5.2 解决思路:

参考:docker启动、关闭、停止、删除 所有容器
先关闭

docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)

再删除

docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)

在这里插入图片描述

2 此时问题已解决——可直接运行startFabric.sh

在之前每一步都完成后,可直接进入fabcar运行 ./startFabric.sh 即可,一切正常会出现:

Total setup execution time : 31 secs ...


Start by installing required packages run 'npm install'
Then run 'node enrollAdmin.js', then 'node registerUser'

The 'node invoke.js' will fail until it has been updated with valid arguments
The 'node query.js' may be run at anytime once the user has been registered

JS文件的调用——enrollAdmin、invoke、query等

参考教程:白皮书V1.1https://hyperledger-fabric.readthedocs.io/en/release-1.1/write_first_app.html

1. npm install 安装依赖——报错npm ERR! node-pre-gyp ERR! build error

npm ERR! node-pre-gyp ERR! build error 
npm ERR! node-pre-gyp ERR! stack Error: Failed to execute '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --library=static_library --module=/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/src/node/extension_binary/node-v108-linux-x64-glibc/grpc_node.node --module_name=grpc_node --module_path=/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/src/node/extension_binary/node-v108-linux-x64-glibc' (1)
1.1 思路一:万能的软件更新:

参考Ubuntu 18.04 Node.js 安装并使用阿里云镜像加速 + Ubuntu升级nodejs版本 尝试更新最新版node和npm

1.1.1 通过n安装最新版node

先卸载:

sudo apt remove nodejs npm

再安装npm:

sudo apt-get install npm

修改npm源:

npm config set registry https://registry.npm.taobao.org
npm config list

安装n模块:

npm -g install n

由n选择nodejs版本:

n lts
n latest

更新node版本:

hash -r

在这里插入图片描述

root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# n lts
  installing : node-v16.15.1
       mkdir : /usr/local/n/versions/node/16.15.1
       fetch : https://npm.taobao.org/mirrors/node/v16.15.1/node-v16.15.1-linux-x64.tar.xz
################################################################################################################################# 100.0%     copying : node/16.15.1
   installed : v16.15.1 (with npm 8.11.0)

Note: the node command changed location and the old location may be remembered in your current shell.
         old : /usr/bin/node
         new : /usr/local/bin/node
If "node --version" shows the old version then start a new shell, or reset the location hash with:
hash -r  (for bash, zsh, ash, dash, and ksh)
rehash   (for csh and tcsh)
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# n latest
  installing : node-v18.3.0
       mkdir : /usr/local/n/versions/node/18.3.0
       fetch : https://npm.taobao.org/mirrors/node/v18.3.0/node-v18.3.0-linux-x64.tar.xz
################################################################################################################################# 100.0%     copying : node/18.3.0
   installed : v18.3.0 (with npm 8.11.0)
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# node -v
v10.19.0
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# n
     copying : node/18.3.0
   installed : v18.3.0 (with npm 8.11.0)
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# node -v
v10.19.0
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# hash -r
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# node -v
v18.3.0
1.1.2 结果:安装仍然报错——gyp-pre二进制文件下载不了(网络问题)在这里插入图片描述

报错:

npm ERR! node-pre-gyp http GET https://storage.googleapis.com/grpc-precompiled-binaries/node/grpc/v1.10.1/node-v108-linux-x64-glibc.tar.gz
npm ERR! node-pre-gyp http 403 https://storage.googleapis.com/grpc-precompiled-binaries/node/grpc/v1.10.1/node-v108-linux-x64-glibc.tar.gz
npm ERR! node-pre-gyp ERR! Tried to download(403): https://storage.googleapis.com/grpc-precompiled-binaries/node/grpc/v1.10.1/node-v108-linux-x64-glibc.tar.gz 
npm ERR! node-pre-gyp ERR! Pre-built binaries not found for grpc@1.10.1 and node@18.3.0 (node-v108 ABI, glibc) (falling back to source compile with node-gyp) 

运行过程:

root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# npm install -g node-gyp
npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.

changed 94 packages in 1s
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# npm install --location=global node-gyp

changed 94 packages in 2s
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# npm install
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: 'fabric-ca-client@1.1.2',
npm WARN EBADENGINE   required: { node: '^8.9.0', npm: '^5.5.1' },
npm WARN EBADENGINE   current: { node: 'v18.3.0', npm: '8.11.0' }
npm WARN EBADENGINE }
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: 'fabric-client@1.1.2',
npm WARN EBADENGINE   required: { node: '^8.9.0', npm: '^5.5.1' },
npm WARN EBADENGINE   current: { node: 'v18.3.0', npm: '8.11.0' }
npm WARN EBADENGINE }
npm WARN deprecated grpc@1.10.1: This library will not receive further updates other than security fixes. We recommend using @grpc/grpc-js instead.
npm ERR! code 1
npm ERR! path /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc
npm ERR! command failed
npm ERR! command sh -c ./node_modules/.bin/node-pre-gyp install --fallback-to-build --library=static_library
npm ERR! make: 进入目录“/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/build”
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/init.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/avl/avl.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/backoff/backoff.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/channel_args.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/channel_stack.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/channel_stack_builder.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/connected_channel.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/handshaker.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/handshaker_factory.o
npm ERR! make: 进入目录“/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/build”
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/handshaker_registry.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/channel/handshaker_registry.o
npm ERR! make: 离开目录“/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/build”
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/compression/compression.o
npm ERR! Failed to execute '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --library=static_library --module=/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/src/node/extension_binary/node-v108-linux-x64-glibc/grpc_node.node --module_name=grpc_node --module_path=/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/src/node/extension_binary/node-v108-linux-x64-glibc' (1)
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/compression/compression_internal.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/compression/message_compress.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/compression/stream_compression.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/compression/stream_compression_gzip.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/compression/stream_compression_identity.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/debug/stats.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/debug/stats_data.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/http/format_request.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/http/httpcli.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/http/parser.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/call_combiner.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/combiner.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/endpoint.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/endpoint_pair_posix.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/endpoint_pair_uv.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/endpoint_pair_windows.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/error.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/ev_epoll1_linux.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/ev_epollex_linux.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/ev_epollsig_linux.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/ev_poll_posix.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/ev_posix.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/ev_windows.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/exec_ctx.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/executor.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/fork_posix.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/fork_windows.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/gethostname_fallback.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/gethostname_host_name_max.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/gethostname_sysconf.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/iocp_windows.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/iomgr.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/iomgr_posix.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/iomgr_uv.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/iomgr_windows.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/is_epollexclusive_available.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/load_file.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/lockfree_event.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/network_status_tracker.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/polling_entity.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/pollset_set_uv.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/pollset_set_windows.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/pollset_uv.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/pollset_windows.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/resolve_address_posix.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/resolve_address_uv.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/resolve_address_windows.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/resource_quota.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/sockaddr_utils.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/socket_factory_posix.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/socket_mutator.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/socket_utils_common_posix.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/socket_utils_linux.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/socket_utils_posix.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/socket_utils_uv.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/socket_utils_windows.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/socket_windows.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_client_posix.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_client_uv.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_client_windows.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_posix.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_server_posix.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_server_utils_posix_common.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_server_uv.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_server_windows.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_uv.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/tcp_windows.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/time_averaged_stats.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/timer_generic.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/timer_heap.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/timer_manager.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/timer_uv.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/udp_server.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/unix_sockets_posix.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/unix_sockets_posix_noop.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/wakeup_fd_cv.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/wakeup_fd_eventfd.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/wakeup_fd_nospecial.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/wakeup_fd_pipe.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/iomgr/wakeup_fd_posix.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/json/json.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/json/json_reader.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/json/json_string.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/json/json_writer.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/slice/b64.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/slice/percent_encoding.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/slice/slice.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/slice/slice_buffer.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/slice/slice_hash_table.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/slice/slice_intern.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/slice/slice_string_helpers.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/api_trace.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/byte_buffer.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/byte_buffer_reader.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/call.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/call_details.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/call_log_batch.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/channel.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/channel_init.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/channel_ping.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/channel_stack_type.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/completion_queue.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/completion_queue_factory.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/event_string.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/lame_client.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/metadata_array.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/server.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/validate_metadata.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/surface/version.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/bdp_estimator.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/byte_stream.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/connectivity_state.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/error_utils.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/metadata.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/metadata_batch.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/pid_controller.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/service_config.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/static_metadata.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/status_conversion.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/timeout_encoding.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/transport.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/transport/transport_op_string.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/lib/debug/trace.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/bin_decoder.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/bin_encoder.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/chttp2_plugin.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/chttp2_transport.o
npm ERR!   CXX(target) Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/flow_control.o
npm ERR! make: 离开目录“/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/build”
npm ERR! node-pre-gyp info it worked if it ends with ok
npm ERR! node-pre-gyp info using node-pre-gyp@0.7.0
npm ERR! node-pre-gyp info using node@18.3.0 | linux | x64
npm ERR! node-pre-gyp info check checked for "/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/src/node/extension_binary/node-v108-linux-x64-glibc/grpc_node.node" (not found)
npm ERR! node-pre-gyp http GET https://storage.googleapis.com/grpc-precompiled-binaries/node/grpc/v1.10.1/node-v108-linux-x64-glibc.tar.gz
npm ERR! node-pre-gyp http 403 https://storage.googleapis.com/grpc-precompiled-binaries/node/grpc/v1.10.1/node-v108-linux-x64-glibc.tar.gz
npm ERR! node-pre-gyp ERR! Tried to download(403): https://storage.googleapis.com/grpc-precompiled-binaries/node/grpc/v1.10.1/node-v108-linux-x64-glibc.tar.gz 
npm ERR! node-pre-gyp ERR! Pre-built binaries not found for grpc@1.10.1 and node@18.3.0 (node-v108 ABI, glibc) (falling back to source compile with node-gyp) 
npm ERR! node-pre-gyp http 403 status code downloading tarball https://storage.googleapis.com/grpc-precompiled-binaries/node/grpc/v1.10.1/node-v108-linux-x64-glibc.tar.gz 
npm ERR! node-pre-gyp ERR! Pre-built binaries not installable for grpc@1.10.1 and node@18.3.0 (node-v108 ABI, glibc) (falling back to source compile with node-gyp) 
npm ERR! node-pre-gyp ERR! Hit error Connection closed while downloading tarball file 
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@9.0.0
npm ERR! gyp info using node@18.3.0 | linux | x64
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@9.0.0
npm ERR! gyp info using node@18.3.0 | linux | x64
npm ERR! gyp info ok 
npm ERR! gyp info ok 
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@9.0.0
npm ERR! gyp info using node@18.3.0 | linux | x64
npm ERR! gyp info using node-gyp@9.0.0
npm ERR! gyp info using node@18.3.0 | linux | x64
npm ERR! gyp info find Python using Python version 3.8.10 found at "/usr/bin/python3"
npm ERR! gyp info find Python using Python version 3.8.10 found at "/usr/bin/python3"
npm ERR! gyp http GET https://nodejs.org/download/release/v18.3.0/node-v18.3.0-headers.tar.gz
npm ERR! gyp http GET https://nodejs.org/download/release/v18.3.0/node-v18.3.0-headers.tar.gz
npm ERR! gyp http 200 https://nodejs.org/download/release/v18.3.0/node-v18.3.0-headers.tar.gz
npm ERR! gyp http 200 https://nodejs.org/download/release/v18.3.0/node-v18.3.0-headers.tar.gz
npm ERR! gyp http GET https://nodejs.org/download/release/v18.3.0/SHASUMS256.txt
npm ERR! gyp http 200 https://nodejs.org/download/release/v18.3.0/SHASUMS256.txt
npm ERR! gyp info spawn /usr/bin/python3
npm ERR! gyp info spawn args [
npm ERR! gyp info spawn args   '/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
npm ERR! gyp info spawn args   'binding.gyp',
npm ERR! gyp info spawn args   '-f',
npm ERR! gyp info spawn args   'make',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/build/config.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/root/.cache/node-gyp/18.3.0/include/node/common.gypi',
npm ERR! gyp info spawn args   '-Dlibrary=shared_library',
npm ERR! gyp info spawn args   '-Dvisibility=default',
npm ERR! gyp info spawn args   '-Dnode_root_dir=/root/.cache/node-gyp/18.3.0',
npm ERR! gyp info spawn args   '-Dnode_gyp_dir=/usr/local/lib/node_modules/npm/node_modules/node-gyp',
npm ERR! gyp info spawn args   '-Dnode_lib_file=/root/.cache/node-gyp/18.3.0/<(target_arch)/node.lib',
npm ERR! gyp info spawn args   '-Dmodule_root_dir=/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc',
npm ERR! gyp info spawn args   '-Dnode_engine=v8',
npm ERR! gyp info spawn args   '--depth=.',
npm ERR! gyp info spawn args   '--no-parallel',
npm ERR! gyp info spawn args   '--generator-output',
npm ERR! gyp info spawn args   'build',
npm ERR! gyp info spawn args   '-Goutput_dir=.'
npm ERR! gyp info spawn args ]
npm ERR! gyp info ok 
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@9.0.0
npm ERR! gyp info using node@18.3.0 | linux | x64
npm ERR! gyp info spawn make
npm ERR! gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
npm ERR! gyp http GET https://nodejs.org/download/release/v18.3.0/SHASUMS256.txt
npm ERR! gyp http 200 https://nodejs.org/download/release/v18.3.0/SHASUMS256.txt
npm ERR! gyp info spawn /usr/bin/python3
npm ERR! gyp info spawn args [
npm ERR! gyp info spawn args   '/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
npm ERR! gyp info spawn args   'binding.gyp',
npm ERR! gyp info spawn args   '-f',
npm ERR! gyp info spawn args   'make',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/build/config.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/root/.cache/node-gyp/18.3.0/include/node/common.gypi',
npm ERR! gyp info spawn args   '-Dlibrary=shared_library',
npm ERR! gyp info spawn args   '-Dvisibility=default',
npm ERR! gyp info spawn args   '-Dnode_root_dir=/root/.cache/node-gyp/18.3.0',
npm ERR! gyp info spawn args   '-Dnode_gyp_dir=/usr/local/lib/node_modules/npm/node_modules/node-gyp',
npm ERR! gyp info spawn args   '-Dnode_lib_file=/root/.cache/node-gyp/18.3.0/<(target_arch)/node.lib',
npm ERR! gyp info spawn args   '-Dmodule_root_dir=/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc',
npm ERR! gyp info spawn args   '-Dnode_engine=v8',
npm ERR! gyp info spawn args   '--depth=.',
npm ERR! gyp info spawn args   '--no-parallel',
npm ERR! gyp info spawn args   '--generator-output',
npm ERR! gyp info spawn args   'build',
npm ERR! gyp info spawn args   '-Goutput_dir=.'
npm ERR! gyp info spawn args ]
npm ERR! gyp info ok 
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@9.0.0
npm ERR! gyp info using node@18.3.0 | linux | x64
npm ERR! gyp info spawn make
npm ERR! gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
npm ERR! rm: 无法删除 './Release/.deps/Release/obj.target/grpc/deps/grpc/src/core/lib/channel/handshaker_registry.o.d.raw': 没有那个文件或目录
npm ERR! make: *** [grpc.target.mk:408:Release/obj.target/grpc/deps/grpc/src/core/lib/channel/handshaker_registry.o] 错误 1
npm ERR! gyp ERR! build error 
npm ERR! gyp ERR! stack Error: `make` failed with exit code: 2
npm ERR! gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:527:28)
npm ERR! gyp ERR! stack     at ChildProcess._handle.onexit (node:internal/child_process:291:12)
npm ERR! gyp ERR! System Linux 5.13.0-44-generic
npm ERR! gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--library=static_library" "--module=/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/src/node/extension_binary/node-v108-linux-x64-glibc/grpc_node.node" "--module_name=grpc_node" "--module_path=/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/src/node/extension_binary/node-v108-linux-x64-glibc"
npm ERR! gyp ERR! cwd /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc
npm ERR! gyp ERR! node -v v18.3.0
npm ERR! gyp ERR! node-gyp -v v9.0.0
npm ERR! gyp ERR! not ok 
npm ERR! node-pre-gyp ERR! build error 
npm ERR! node-pre-gyp ERR! stack Error: Failed to execute '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --library=static_library --module=/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/src/node/extension_binary/node-v108-linux-x64-glibc/grpc_node.node --module_name=grpc_node --module_path=/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/src/node/extension_binary/node-v108-linux-x64-glibc' (1)
npm ERR! node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
npm ERR! node-pre-gyp ERR! stack     at ChildProcess.emit (node:events:527:28)
npm ERR! node-pre-gyp ERR! stack     at maybeClose (node:internal/child_process:1090:16)
npm ERR! node-pre-gyp ERR! stack     at ChildProcess._handle.onexit (node:internal/child_process:302:5)
npm ERR! node-pre-gyp ERR! System Linux 5.13.0-44-generic
npm ERR! node-pre-gyp ERR! command "/usr/local/bin/node" "/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build" "--library=static_library"
npm ERR! node-pre-gyp ERR! cwd /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc
npm ERR! node-pre-gyp ERR! node -v v18.3.0
npm ERR! node-pre-gyp ERR! node-pre-gyp -v v0.7.0
npm ERR! node-pre-gyp ERR! not ok 
npm ERR! ../deps/grpc/src/core/ext/transport/chttp2/transport/flow_control.cc: In member function ‘virtual uint32_t grpc_core::chttp2::TransportFlowControl::MaybeSendUpdate(bool)’:
npm ERR! ../deps/grpc/src/core/ext/transport/chttp2/transport/flow_control.cc:188:50: error: type qualifiers ignored on cast result type [-Werror=ignored-qualifiers]
npm ERR!   188 |       static_cast<const uint32_t>(target_window());
npm ERR!       |                                                  ^
npm ERR! cc1plus: all warnings being treated as errors
npm ERR! make: *** [grpc.target.mk:411:Release/obj.target/grpc/deps/grpc/src/core/ext/transport/chttp2/transport/flow_control.o] 错误 1
npm ERR! gyp ERR! build error 
npm ERR! gyp ERR! stack Error: `make` failed with exit code: 2
npm ERR! gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:527:28)
npm ERR! gyp ERR! stack     at ChildProcess._handle.onexit (node:internal/child_process:291:12)
npm ERR! gyp ERR! System Linux 5.13.0-44-generic
npm ERR! gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--library=static_library" "--module=/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/src/node/extension_binary/node-v108-linux-x64-glibc/grpc_node.node" "--module_name=grpc_node" "--module_path=/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/src/node/extension_binary/node-v108-linux-x64-glibc"
npm ERR! gyp ERR! cwd /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc
npm ERR! gyp ERR! node -v v18.3.0
npm ERR! gyp ERR! node-gyp -v v9.0.0
npm ERR! gyp ERR! not ok

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2022-06-02T08_14_30_850Z-debug-0.log
1.1.3 考虑手动下载node源文件进行安装
1.1.3.1 先卸载node和npm
#apt-get 卸载
sudo apt-get remove --purge npm
sudo apt-get remove --purge nodejs
sudo apt-get remove --purge nodejs-legacy
sudo apt-get autoremove
1.1.3.2 选择合适版本下载——V 8.9.4

参考搭建账本Fabric-sample fabcar(三) 最终确定下载V8.9.4版本
对应官网:https://nodejs.org/download/release/v8.9.4/
执行命令:

wget https://nodejs.org/download/release/v8.9.4/node-v8.9.4-linux-x64.tar.gz
tar -xzvf node-v8.9.4-linux-x64.tar.gz
mv node-v8.9.4-linux-x64/ /usr/local/software/node/
rm -rf /usr/local/bin/npm /usr/local/bin/node
ln -s /usr/local/software/node/bin/npm /usr/local/bin/npm
ln -s /usr/local/software/node/bin/node /usr/local/bin/node
node -v
npm -v

运行过程:

root@The-Land-Like-as-A-Picture:/usr/local/software# wget https://nodejs.org/download/release/v8.9.4/node-v8.9.4-linux-x64.tar.gz
root@The-Land-Like-as-A-Picture:/usr/local/software# tar -xzvf node-v8.9.4-linux-x64.tar.gz
root@The-Land-Like-as-A-Picture:/usr/local/software# mv node-v8.9.4-linux-x64/ /usr/local/software/node/

在这里插入图片描述

1.2 在普通用户下尝试npm install——然而在node-gyp rebuild || node suppress-error.js 过程卡住:
npm config set registry http://registry.npm.taobao.org/
npm install
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# exit
exit
jack@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/basic-network$ cd ../fabcar/
jack@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar$ ll
总用量 36
drwxrwxrwx  2 root root 4096 63 23:47 ./
drwxrwxrwx 14 root root 4096 531 19:16 ../
-rwxrwxrwx  1 root root 2809 531 19:15 enrollAdmin.js*
-rwxrwxrwx  1 root root 6353 531 19:15 invoke.js*
-rwxrwxrwx  1 root root  533 531 19:15 package.json*
-rwxrwxrwx  1 root root 2606 531 19:15 query.js*
-rwxrwxrwx  1 root root 3147 531 19:15 registerUser.js*
-rwxrwxrwx  1 root root 2070 531 19:15 startFabric.sh*
jack@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar$ npm config set registry http://registry.npm.taobao.org/
jack@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar$ npm -v
5.6.0
jack@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar$ npm install
npm WARN deprecated grpc@1.24.11: This library will not receive further updates other than security fixes. We recommend using @grpc/grpc-js instead.
npm WARN deprecated grpc@1.10.1: This library will not receive further updates other than security fixes. We recommend using @grpc/grpc-js instead.
npm WARN deprecated hoek@4.2.1: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated jssha@2.4.2: jsSHA versions < 3.0.0 will no longer receive feature updates
npm WARN deprecated node-pre-gyp@0.7.0: Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future
npm WARN deprecated cloudant-follow@0.17.0: This package is no longer maintained.
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated querystring@0.2.0: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
npm WARN deprecated formidable@1.2.6: Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.83.0: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated tar@2.2.2: This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated har-validator@5.0.3: this library is no longer supported
npm WARN deprecated hawk@6.0.2: This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.
npm WARN deprecated cryptiles@3.1.4: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated boom@4.3.1: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm WARN deprecated sntp@2.1.0: This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.
npm WARN deprecated boom@5.2.0: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).

> dtrace-provider@0.8.8 install /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/dtrace-provider
> node-gyp rebuild || node suppress-error.js

^C
1.2.1 解决思路一:更改python版本

参考解决 node-gyp rebuild 问题先尝试更改python版本

为防止权限不足以下命令切root编译:
在这里插入图片描述
执行命令:

wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar -zxvf Python-2.7.9.tgz
cd Python-2.7.9
./configure --prefix=usr/local/python-2.7.9
make
make install
python2.7.9 -V
npm config set python python2.7.9

执行结果:
在这里插入图片描述

1.2.2 npm install 不再报错

npm install
在这里插入图片描述

1.3 调用node enrollAdmin.js 报错——Error: The gRPC binary module was not installed. This may be fixed by running "npm rebuild

npm install 依赖均已成功获取后,便是调用对应JS脚本文件,在node enrollAdmin.js时报错:

The gRPC binary module was not installed.
在这里插入图片描述

运行过程

root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# node enrollAdmin.js
/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/src/grpc_extension.js:45
    throw error;
    ^

Error: The gRPC binary module was not installed. This may be fixed by running "npm rebuild"
Original error: Cannot find module '/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/src/node/extension_binary/node-v57-linux-x64-glibc/grpc_node.node'
    at Object.<anonymous> (/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/src/grpc_extension.js:43:17)
    at Module._compile (module.js:643:30)
    at Object.Module._extensions..js (module.js:654:10)
    at Module.load (module.js:556:32)
    at tryModuleLoad (module.js:499:12)
    at Function.Module._load (module.js:491:3)
    at Module.require (module.js:587:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/src/client.js:37:12)
    at Module._compile (module.js:643:30)
1.3.1 基于所给意见,运行 npm rebuild —— 卡在 node-gyp rebuild这

在这里插入图片描述

1.3.2 解决思路:安装node-gyp 的依赖

参考ubuntu安装node的问题

sudo apt-get update
sudo apt-get install libcairo2-dev libjpeg-dev libpango1.0-dev libgif-dev build-essential g++
1.3.2.1 重新npm rebuild:卡在node-pre-gyp install

重新npm rebuild:卡在

node-pre-gyp install --fallback-to-build --library=static_library

1.3.2.2 解决思路:sudo npm install -g node-gyp
sudo npm install -g node-gyp
npm rebuild
1.3 问题解决
jack@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar$ sudo npm install -g node-gyp
/usr/local/software/node/bin/node-gyp -> /usr/local/software/node/lib/node_modules/node-gyp/bin/node-gyp.js
+ node-gyp@9.0.0
added 94 packages in 4.273s
jack@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar$ npm install
npm WARN node-fetch@2.6.7 requires a peer of encoding@^0.1.0 but none is installed. You must install peer dependencies yourself.
npm WARN fabcar@1.0.0 No repository field.

up to date in 0.958s
jack@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar$ npm rebuild

> grpc@1.10.1 install /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc
> node-pre-gyp install --fallback-to-build --library=static_library

[grpc] Success: "/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/src/node/extension_binary/node-v57-linux-x64-glibc/grpc_node.node" already installed
Pass --update-binary to reinstall or --build-from-source to recompile

> pkcs11js@1.3.0 install /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/pkcs11js
> node-gyp rebuild

make: 进入目录“/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/pkcs11js/build”
  CXX(target) Release/obj.target/pkcs11/src/main.o
In file included from /home/jack/.node-gyp/8.9.4/include/node/node.h:63,
                 from ../../nan/nan.h:60,
                 from ../src/main.cpp:1:
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::SetAllowCodeGenerationFromStringsCallback(v8::DeprecatedAllowCodeGenerationFromStringsCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10177:19: warning: cast between incompatible function types from ‘v8::DeprecatedAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>)} to ‘v8::FreshNewAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>, v8::Local<v8::String>)} [-Wcast-function-type]
10177 |           callback));
      |                   ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCPrologueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10222:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10222 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCEpilogueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10229:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10229 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
In file included from ../../nan/nan.h:60,
                 from ../src/main.cpp:1:
../src/main.cpp: At global scope:
/home/jack/.node-gyp/8.9.4/include/node/node.h:475:43: warning: cast between incompatible function types from ‘void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE){aka ‘void (*)(v8::Local<v8::Object>)} to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)} [-Wcast-function-type]
  475 |       (node::addon_register_func) (regfunc),                          \
      |                                           ^
/home/jack/.node-gyp/8.9.4/include/node/node.h:506:3: note: in expansion of macro ‘NODE_MODULE_X’
  506 |   NODE_MODULE_X(modname, regfunc, NULL, 0)
      |   ^~~~~~~~~~~~~
../src/main.cpp:27:1: note: in expansion of macro ‘NODE_MODULE’
   27 | NODE_MODULE(pkcs11, init)
      | ^~~~~~~~~~~
In file included from /home/jack/.node-gyp/8.9.4/include/node/node.h:63,
                 from ../../nan/nan.h:60,
                 from ../src/main.cpp:1:
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/home/jack/.node-gyp/8.9.4/include/node/node_object_wrap.h:85:78:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
 9200 |                reinterpret_cast<Callback>(callback), type);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
  CXX(target) Release/obj.target/pkcs11/src/dl.o
  CXX(target) Release/obj.target/pkcs11/src/const.o
In file included from /home/jack/.node-gyp/8.9.4/include/node/node.h:63,
                 from ../src/const.h:5,
                 from ../src/const.cpp:1:
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::SetAllowCodeGenerationFromStringsCallback(v8::DeprecatedAllowCodeGenerationFromStringsCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10177:19: warning: cast between incompatible function types from ‘v8::DeprecatedAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>)} to ‘v8::FreshNewAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>, v8::Local<v8::String>)} [-Wcast-function-type]
10177 |           callback));
      |                   ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCPrologueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10222:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10222 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCEpilogueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10229:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10229 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/home/jack/.node-gyp/8.9.4/include/node/node_object_wrap.h:85:78:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
 9200 |                reinterpret_cast<Callback>(callback), type);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
  CXX(target) Release/obj.target/pkcs11/src/pkcs11/error.o
  CXX(target) Release/obj.target/pkcs11/src/pkcs11/v8_convert.o
In file included from /home/jack/.node-gyp/8.9.4/include/node/node.h:63,
                 from ../../nan/nan.h:60,
                 from ../src/pkcs11/v8_convert.h:12,
                 from ../src/pkcs11/v8_convert.cpp:1:
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::SetAllowCodeGenerationFromStringsCallback(v8::DeprecatedAllowCodeGenerationFromStringsCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10177:19: warning: cast between incompatible function types from ‘v8::DeprecatedAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>)} to ‘v8::FreshNewAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>, v8::Local<v8::String>)} [-Wcast-function-type]
10177 |           callback));
      |                   ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCPrologueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10222:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10222 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCEpilogueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10229:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10229 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/home/jack/.node-gyp/8.9.4/include/node/node_object_wrap.h:85:78:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
 9200 |                reinterpret_cast<Callback>(callback), type);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
  CXX(target) Release/obj.target/pkcs11/src/pkcs11/template.o
In file included from /home/jack/.node-gyp/8.9.4/include/node/node.h:63,
                 from ../../nan/nan.h:60,
                 from ../src/pkcs11/v8_convert.h:12,
                 from ../src/pkcs11/template.h:6,
                 from ../src/pkcs11/template.cpp:1:
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::SetAllowCodeGenerationFromStringsCallback(v8::DeprecatedAllowCodeGenerationFromStringsCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10177:19: warning: cast between incompatible function types from ‘v8::DeprecatedAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>)} to ‘v8::FreshNewAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>, v8::Local<v8::String>)} [-Wcast-function-type]
10177 |           callback));
      |                   ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCPrologueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10222:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10222 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCEpilogueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10229:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10229 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/home/jack/.node-gyp/8.9.4/include/node/node_object_wrap.h:85:78:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
 9200 |                reinterpret_cast<Callback>(callback), type);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
  CXX(target) Release/obj.target/pkcs11/src/pkcs11/mech.o
In file included from /home/jack/.node-gyp/8.9.4/include/node/node.h:63,
                 from ../../nan/nan.h:60,
                 from ../src/pkcs11/v8_convert.h:12,
                 from ../src/pkcs11/mech.h:5,
                 from ../src/pkcs11/mech.cpp:1:
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::SetAllowCodeGenerationFromStringsCallback(v8::DeprecatedAllowCodeGenerationFromStringsCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10177:19: warning: cast between incompatible function types from ‘v8::DeprecatedAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>)} to ‘v8::FreshNewAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>, v8::Local<v8::String>)} [-Wcast-function-type]
10177 |           callback));
      |                   ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCPrologueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10222:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10222 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCEpilogueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10229:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10229 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/home/jack/.node-gyp/8.9.4/include/node/node_object_wrap.h:85:78:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
 9200 |                reinterpret_cast<Callback>(callback), type);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
  CXX(target) Release/obj.target/pkcs11/src/pkcs11/param.o
In file included from /home/jack/.node-gyp/8.9.4/include/node/node.h:63,
                 from ../../nan/nan.h:60,
                 from ../src/pkcs11/v8_convert.h:12,
                 from ../src/pkcs11/param.h:5,
                 from ../src/pkcs11/param.cpp:1:
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::SetAllowCodeGenerationFromStringsCallback(v8::DeprecatedAllowCodeGenerationFromStringsCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10177:19: warning: cast between incompatible function types from ‘v8::DeprecatedAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>)} to ‘v8::FreshNewAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>, v8::Local<v8::String>)} [-Wcast-function-type]
10177 |           callback));
      |                   ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCPrologueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10222:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10222 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCEpilogueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10229:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10229 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/home/jack/.node-gyp/8.9.4/include/node/node_object_wrap.h:85:78:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
 9200 |                reinterpret_cast<Callback>(callback), type);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
  CXX(target) Release/obj.target/pkcs11/src/pkcs11/param_aes.o
In file included from /home/jack/.node-gyp/8.9.4/include/node/node.h:63,
                 from ../../nan/nan.h:60,
                 from ../src/pkcs11/v8_convert.h:12,
                 from ../src/pkcs11/param.h:5,
                 from ../src/pkcs11/param_aes.cpp:1:
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::SetAllowCodeGenerationFromStringsCallback(v8::DeprecatedAllowCodeGenerationFromStringsCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10177:19: warning: cast between incompatible function types from ‘v8::DeprecatedAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>)} to ‘v8::FreshNewAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>, v8::Local<v8::String>)} [-Wcast-function-type]
10177 |           callback));
      |                   ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCPrologueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10222:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10222 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCEpilogueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10229:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10229 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/home/jack/.node-gyp/8.9.4/include/node/node_object_wrap.h:85:78:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
 9200 |                reinterpret_cast<Callback>(callback), type);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
  CXX(target) Release/obj.target/pkcs11/src/pkcs11/param_rsa.o
In file included from /home/jack/.node-gyp/8.9.4/include/node/node.h:63,
                 from ../../nan/nan.h:60,
                 from ../src/pkcs11/v8_convert.h:12,
                 from ../src/pkcs11/param.h:5,
                 from ../src/pkcs11/param_rsa.cpp:1:
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::SetAllowCodeGenerationFromStringsCallback(v8::DeprecatedAllowCodeGenerationFromStringsCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10177:19: warning: cast between incompatible function types from ‘v8::DeprecatedAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>)} to ‘v8::FreshNewAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>, v8::Local<v8::String>)} [-Wcast-function-type]
10177 |           callback));
      |                   ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCPrologueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10222:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10222 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCEpilogueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10229:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10229 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/home/jack/.node-gyp/8.9.4/include/node/node_object_wrap.h:85:78:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
 9200 |                reinterpret_cast<Callback>(callback), type);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
  CXX(target) Release/obj.target/pkcs11/src/pkcs11/param_ecdh.o
In file included from /home/jack/.node-gyp/8.9.4/include/node/node.h:63,
                 from ../../nan/nan.h:60,
                 from ../src/pkcs11/v8_convert.h:12,
                 from ../src/pkcs11/param.h:5,
                 from ../src/pkcs11/param_ecdh.cpp:1:
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::SetAllowCodeGenerationFromStringsCallback(v8::DeprecatedAllowCodeGenerationFromStringsCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10177:19: warning: cast between incompatible function types from ‘v8::DeprecatedAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>)} to ‘v8::FreshNewAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>, v8::Local<v8::String>)} [-Wcast-function-type]
10177 |           callback));
      |                   ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCPrologueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10222:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10222 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCEpilogueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10229:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10229 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/home/jack/.node-gyp/8.9.4/include/node/node_object_wrap.h:85:78:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
 9200 |                reinterpret_cast<Callback>(callback), type);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
  CXX(target) Release/obj.target/pkcs11/src/pkcs11/pkcs11.o
In file included from /home/jack/.node-gyp/8.9.4/include/node/node.h:63,
                 from ../src/pkcs11/pkcs11.cpp:1:
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::SetAllowCodeGenerationFromStringsCallback(v8::DeprecatedAllowCodeGenerationFromStringsCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10177:19: warning: cast between incompatible function types from ‘v8::DeprecatedAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>)} to ‘v8::FreshNewAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>, v8::Local<v8::String>)} [-Wcast-function-type]
10177 |           callback));
      |                   ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCPrologueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10222:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10222 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCEpilogueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10229:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10229 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/home/jack/.node-gyp/8.9.4/include/node/node_object_wrap.h:85:78:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
 9200 |                reinterpret_cast<Callback>(callback), type);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
  CXX(target) Release/obj.target/pkcs11/src/async.o
In file included from /home/jack/.node-gyp/8.9.4/include/node/node.h:63,
                 from ../../nan/nan.h:60,
                 from ../src/./pkcs11/v8_convert.h:12,
                 from ../src/./pkcs11/template.h:6,
                 from ../src/./pkcs11/pkcs11.h:6,
                 from ../src/./async.h:4,
                 from ../src/async.cpp:1:
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::SetAllowCodeGenerationFromStringsCallback(v8::DeprecatedAllowCodeGenerationFromStringsCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10177:19: warning: cast between incompatible function types from ‘v8::DeprecatedAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>)} to ‘v8::FreshNewAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>, v8::Local<v8::String>)} [-Wcast-function-type]
10177 |           callback));
      |                   ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCPrologueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10222:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10222 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCEpilogueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10229:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10229 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/home/jack/.node-gyp/8.9.4/include/node/node_object_wrap.h:85:78:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
 9200 |                reinterpret_cast<Callback>(callback), type);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
  CXX(target) Release/obj.target/pkcs11/src/node.o
In file included from /home/jack/.node-gyp/8.9.4/include/node/node.h:63,
                 from ../src/node.cpp:1:
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::SetAllowCodeGenerationFromStringsCallback(v8::DeprecatedAllowCodeGenerationFromStringsCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10177:19: warning: cast between incompatible function types from ‘v8::DeprecatedAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>)} to ‘v8::FreshNewAllowCodeGenerationFromStringsCallback’ {aka ‘bool (*)(v8::Local<v8::Context>, v8::Local<v8::String>)} [-Wcast-function-type]
10177 |           callback));
      |                   ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCPrologueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10222:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10222 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In static member function ‘static void v8::V8::RemoveGCEpilogueCallback(v8::GCCallback)’:
/home/jack/.node-gyp/8.9.4/include/node/v8.h:10229:53: warning: cast between incompatible function types from ‘v8::GCCallback’ {aka ‘void (*)(v8::GCType, v8::GCCallbackFlags)} to ‘v8::Isolate::GCCallback’ {aka ‘void (*)(v8::Isolate*, v8::GCType, v8::GCCallbackFlags)} [-Wcast-function-type]
10229 |       reinterpret_cast<Isolate::GCCallback>(callback));
      |                                                     ^
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/home/jack/.node-gyp/8.9.4/include/node/node_object_wrap.h:85:78:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
 9200 |                reinterpret_cast<Callback>(callback), type);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jack/.node-gyp/8.9.4/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/home/jack/.node-gyp/8.9.4/include/node/v8.h:9200:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)} [-Wcast-function-type]
  SOLINK_MODULE(target) Release/obj.target/pkcs11.node
  COPY Release/pkcs11.node
make: 离开目录“/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/pkcs11js/build”

> grpc@1.24.11 install /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/grpc
> node-pre-gyp install --fallback-to-build --library=static_library

[grpc] Success: "/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/grpc/src/node/extension_binary/node-v57-linux-x64-glibc/grpc_node.node" already installed
Pass --update-binary to reinstall or --build-from-source to recompile

> dtrace-provider@0.8.8 install /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/dtrace-provider
> node-gyp rebuild || node suppress-error.js

make: 进入目录“/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/dtrace-provider/build”
  TOUCH Release/obj.target/DTraceProviderStub.stamp
make: 离开目录“/workspace/github.com/fabric/fabric-samples/fabcar/node_modules/dtrace-provider/build”
fabric-ca-client@1.1.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-ca-client
bn.js@4.12.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/bn.js
elliptic@6.5.4 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/elliptic
brorand@1.1.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/brorand
hash.js@1.1.7 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/hash.js
inherits@2.0.4 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/inherits
minimalistic-assert@1.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/minimalistic-assert
hmac-drbg@1.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/hmac-drbg
minimalistic-crypto-utils@1.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/minimalistic-crypto-utils
fs-extra@0.30.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fs-extra
graceful-fs@4.2.10 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/graceful-fs
jsonfile@2.4.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/jsonfile
klaw@1.3.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/klaw
path-is-absolute@1.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/path-is-absolute
rimraf@2.7.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/rimraf
glob@7.2.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/glob
fs.realpath@1.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fs.realpath
inflight@1.0.6 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/inflight
once@1.4.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/once
wrappy@1.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/wrappy
minimatch@3.1.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/minimatch
brace-expansion@1.1.11 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/brace-expansion
balanced-match@1.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/balanced-match
concat-map@0.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/concat-map
js-sha3@0.5.7 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/js-sha3
jsrsasign@7.2.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/jsrsasign
jssha@2.4.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/jssha
long@3.2.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/long
nconf@0.8.5 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/nconf
async@1.5.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/async
ini@1.3.8 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/ini
secure-keys@1.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/secure-keys
yargs@3.32.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/yargs
camelcase@2.1.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/camelcase
cliui@3.2.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/cliui
string-width@1.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/string-width
code-point-at@1.1.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/code-point-at
is-fullwidth-code-point@1.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/is-fullwidth-code-point
number-is-nan@1.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/number-is-nan
strip-ansi@3.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/strip-ansi
ansi-regex@2.1.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/ansi-regex
wrap-ansi@2.1.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/wrap-ansi
decamelize@1.2.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/decamelize
os-locale@1.4.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/os-locale
lcid@1.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/lcid
invert-kv@1.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/invert-kv
window-size@0.1.4 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/window-size
y18n@3.2.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/y18n
sjcl@1.0.7 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/sjcl
url@0.11.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/url
punycode@1.3.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/punycode
querystring@0.2.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/querystring
util@0.10.4 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/util
inherits@2.0.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/util/node_modules/inherits
winston@2.4.6 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/winston
async@3.2.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/winston/node_modules/async
colors@1.0.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/colors
cycle@1.0.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/cycle
eyes@0.1.8 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/eyes
isstream@0.1.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/isstream
stack-trace@0.0.10 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/stack-trace
fabric-client@1.1.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client
callsite@1.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/callsite
fs@0.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fs
grpc@1.10.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc
lodash@4.17.21 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/lodash
nan@2.16.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/nan
node-pre-gyp@0.7.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/node-pre-gyp
detect-libc@1.0.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/detect-libc
mkdirp@0.5.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/mkdirp
minimist@0.0.8 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/mkdirp/node_modules/minimist
nopt@4.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/nopt
abbrev@1.1.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/abbrev
osenv@0.1.5 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/osenv
os-homedir@1.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/os-homedir
os-tmpdir@1.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/os-tmpdir
npmlog@4.1.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/npmlog
are-we-there-yet@1.1.4 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/are-we-there-yet
delegates@1.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/delegates
readable-stream@2.3.5 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/readable-stream
core-util-is@1.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/core-util-is
inherits@2.0.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/inherits
isarray@1.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/isarray
process-nextick-args@2.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/process-nextick-args
safe-buffer@5.1.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/safe-buffer
string_decoder@1.0.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/string_decoder
util-deprecate@1.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/util-deprecate
console-control-strings@1.1.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/console-control-strings
gauge@2.7.4 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/gauge
aproba@1.2.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/aproba
has-unicode@2.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/has-unicode
object-assign@4.1.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/object-assign
signal-exit@3.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/signal-exit
string-width@1.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/string-width
code-point-at@1.1.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/code-point-at
is-fullwidth-code-point@1.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/is-fullwidth-code-point
number-is-nan@1.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/number-is-nan
strip-ansi@3.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/strip-ansi
ansi-regex@2.1.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/ansi-regex
wide-align@1.1.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/wide-align
set-blocking@2.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/set-blocking
rc@1.2.6 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/rc
deep-extend@0.4.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/deep-extend
ini@1.3.5 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/ini
minimist@1.2.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/minimist
strip-json-comments@2.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/strip-json-comments
request@2.83.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/request
aws-sign2@0.7.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/aws-sign2
aws4@1.6.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/aws4
caseless@0.12.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/caseless
combined-stream@1.0.6 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/combined-stream
delayed-stream@1.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/delayed-stream
extend@3.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/extend
forever-agent@0.6.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/forever-agent
form-data@2.3.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/form-data
asynckit@0.4.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/asynckit
mime-types@2.1.18 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/mime-types
mime-db@1.33.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/mime-db
har-validator@5.0.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/har-validator
ajv@5.5.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/ajv
co@4.6.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/co
fast-deep-equal@1.1.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/fast-deep-equal
fast-json-stable-stringify@2.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/fast-json-stable-stringify
json-schema-traverse@0.3.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/json-schema-traverse
har-schema@2.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/har-schema
hawk@6.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/hawk
boom@4.3.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/boom
hoek@4.2.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/hoek
cryptiles@3.1.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/cryptiles
boom@5.2.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/cryptiles/node_modules/boom
sntp@2.1.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/sntp
http-signature@1.2.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/http-signature
assert-plus@1.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/assert-plus
jsprim@1.4.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/jsprim
extsprintf@1.3.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/extsprintf
json-schema@0.2.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/json-schema
verror@1.10.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/verror
sshpk@1.14.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/sshpk
asn1@0.2.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/asn1
dashdash@1.14.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/dashdash
getpass@0.1.7 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/getpass
is-typedarray@1.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/is-typedarray
isstream@0.1.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/isstream
json-stringify-safe@5.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/json-stringify-safe
oauth-sign@0.8.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/oauth-sign
performance-now@2.1.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/performance-now
qs@6.5.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/qs
stringstream@0.0.5 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/stringstream
tough-cookie@2.3.4 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/tough-cookie
punycode@1.4.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/punycode
tunnel-agent@0.6.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/tunnel-agent
uuid@3.2.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/uuid
rimraf@2.6.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/rimraf
glob@7.1.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/glob
fs.realpath@1.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/fs.realpath
inflight@1.0.6 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/inflight
once@1.4.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/once
wrappy@1.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/wrappy
minimatch@3.0.4 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/minimatch
brace-expansion@1.1.8 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/brace-expansion
balanced-match@1.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/balanced-match
concat-map@0.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/concat-map
path-is-absolute@1.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/path-is-absolute
semver@5.5.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/semver
tar@2.2.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/tar
block-stream@0.0.9 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/block-stream
fstream@1.0.11 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/fstream
graceful-fs@4.1.11 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/graceful-fs
tar-pack@3.4.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/tar-pack
debug@2.6.9 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/debug
ms@2.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/ms
fstream-ignore@1.0.5 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/fstream-ignore
uid-number@0.0.6 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/uid-number
protobufjs@5.0.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/protobufjs
ascli@1.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/ascli
colour@0.7.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/colour
optjs@3.2.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/optjs
bytebuffer@5.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/bytebuffer
bcrypt-pbkdf@1.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/bcrypt-pbkdf
tweetnacl@0.14.5 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/tweetnacl
ecc-jsbn@0.1.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/ecc-jsbn
jsbn@0.1.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fabric-client/node_modules/grpc/node_modules/jsbn
hoek@4.2.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/hoek
ignore-walk@3.0.4 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/ignore-walk
js-yaml@3.14.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/js-yaml
argparse@1.0.10 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/argparse
sprintf-js@1.0.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/sprintf-js
esprima@4.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/esprima
nano@6.4.4 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/nano
cloudant-follow@0.17.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/cloudant-follow
browser-request@0.3.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/browser-request
debug@3.2.7 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/cloudant-follow/node_modules/debug
ms@2.1.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/ms
request@2.88.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/request
aws-sign2@0.7.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/aws-sign2
aws4@1.11.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/aws4
caseless@0.12.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/caseless
combined-stream@1.0.8 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/combined-stream
delayed-stream@1.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/delayed-stream
extend@3.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/extend
forever-agent@0.6.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/forever-agent
form-data@2.3.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/form-data
asynckit@0.4.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/asynckit
mime-types@2.1.35 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/mime-types
mime-db@1.52.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/mime-db
har-validator@5.1.5 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/har-validator
ajv@6.12.6 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/ajv
fast-deep-equal@3.1.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fast-deep-equal
fast-json-stable-stringify@2.1.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fast-json-stable-stringify
json-schema-traverse@0.4.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/json-schema-traverse
uri-js@4.4.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/uri-js
punycode@2.1.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/uri-js/node_modules/punycode
har-schema@2.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/har-schema
http-signature@1.2.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/http-signature
assert-plus@1.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/assert-plus
jsprim@1.4.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/jsprim
extsprintf@1.3.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/extsprintf
json-schema@0.4.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/json-schema
verror@1.10.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/verror
core-util-is@1.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/core-util-is
sshpk@1.17.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/sshpk
asn1@0.2.6 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/asn1
safer-buffer@2.1.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/safer-buffer
bcrypt-pbkdf@1.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/bcrypt-pbkdf
tweetnacl@0.14.5 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/tweetnacl
dashdash@1.14.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/dashdash
ecc-jsbn@0.1.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/ecc-jsbn
jsbn@0.1.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/jsbn
getpass@0.1.7 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/getpass
is-typedarray@1.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/is-typedarray
json-stringify-safe@5.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/json-stringify-safe
oauth-sign@0.9.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/oauth-sign
performance-now@2.1.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/performance-now
qs@6.5.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/qs
safe-buffer@5.2.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/safe-buffer
tough-cookie@2.5.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/tough-cookie
psl@1.8.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/psl
punycode@2.1.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/tough-cookie/node_modules/punycode
tunnel-agent@0.6.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/tunnel-agent
uuid@3.4.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/uuid
debug@2.6.9 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/debug
ms@2.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/debug/node_modules/ms
errs@0.3.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/errs
lodash.isempty@4.4.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/lodash.isempty
path@0.12.7 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/path
process@0.11.10 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/process
pkcs11js@1.3.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/pkcs11js
promise-settle@0.3.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/promise-settle
restify@6.3.4 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/restify
bunyan@1.8.15 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/bunyan
clone-regexp@1.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/clone-regexp
is-regexp@1.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/is-regexp
is-supported-regexp-flag@1.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/is-supported-regexp-flag
csv@1.2.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/csv
csv-generate@1.1.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/csv-generate
csv-parse@1.3.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/csv-parse
csv-stringify@1.1.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/csv-stringify
lodash.get@4.4.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/lodash.get
stream-transform@0.2.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/stream-transform
escape-regexp-component@1.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/escape-regexp-component
ewma@2.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/ewma
formidable@1.2.6 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/formidable
lru-cache@4.1.5 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/lru-cache
pseudomap@1.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/pseudomap
yallist@2.1.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/yallist
mime@1.6.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/mime
negotiator@0.6.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/negotiator
pidusage@1.2.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/pidusage
restify-errors@5.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/restify-errors
semver@5.7.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/semver
spdy@3.4.7 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/spdy
handle-thing@1.2.5 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/handle-thing
http-deceiver@1.2.7 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/http-deceiver
select-hose@2.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/select-hose
spdy-transport@2.1.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/spdy-transport
detect-node@2.1.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/detect-node
hpack.js@2.1.6 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/hpack.js
obuf@1.1.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/obuf
readable-stream@2.3.7 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/readable-stream
isarray@1.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/isarray
process-nextick-args@2.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/process-nextick-args
safe-buffer@5.1.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/readable-stream/node_modules/safe-buffer
string_decoder@1.1.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/string_decoder
safe-buffer@5.1.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/string_decoder/node_modules/safe-buffer
util-deprecate@1.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/util-deprecate
wbuf@1.7.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/wbuf
vasync@1.6.4 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/vasync
verror@1.6.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/vasync/node_modules/verror
extsprintf@1.2.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/vasync/node_modules/extsprintf
stream-buffers@3.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/stream-buffers
tar-stream@1.5.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/tar-stream
bl@1.2.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/bl
end-of-stream@1.4.4 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/end-of-stream
xtend@4.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/xtend
grpc@1.24.11 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/grpc
@mapbox/node-pre-gyp@1.0.9 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/@mapbox/node-pre-gyp
detect-libc@2.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/detect-libc
https-proxy-agent@5.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/https-proxy-agent
agent-base@6.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/agent-base
debug@4.3.4 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/agent-base/node_modules/debug
ms@2.1.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/agent-base/node_modules/ms
debug@4.3.4 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/https-proxy-agent/node_modules/debug
ms@2.1.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/https-proxy-agent/node_modules/ms
make-dir@3.1.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/make-dir
semver@6.3.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/make-dir/node_modules/semver
node-fetch@2.6.7 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/node-fetch
whatwg-url@5.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/whatwg-url
tr46@0.0.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/tr46
webidl-conversions@3.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/webidl-conversions
nopt@5.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/nopt
abbrev@1.1.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/abbrev
npmlog@5.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/npmlog
are-we-there-yet@2.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/are-we-there-yet
delegates@1.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/delegates
readable-stream@3.6.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/are-we-there-yet/node_modules/readable-stream
console-control-strings@1.1.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/console-control-strings
gauge@3.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/gauge
aproba@2.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/aproba
color-support@1.1.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/color-support
has-unicode@2.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/has-unicode
object-assign@4.1.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/object-assign
signal-exit@3.0.7 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/signal-exit
string-width@4.2.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/gauge/node_modules/string-width
emoji-regex@8.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/emoji-regex
is-fullwidth-code-point@3.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/gauge/node_modules/is-fullwidth-code-point
strip-ansi@6.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/gauge/node_modules/strip-ansi
ansi-regex@5.0.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/gauge/node_modules/ansi-regex
wide-align@1.1.5 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/wide-align
set-blocking@2.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/set-blocking
rimraf@3.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/@mapbox/node-pre-gyp/node_modules/rimraf
semver@7.3.7 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/@mapbox/node-pre-gyp/node_modules/semver
lru-cache@6.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/@mapbox/node-pre-gyp/node_modules/lru-cache
yallist@4.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/@mapbox/node-pre-gyp/node_modules/yallist
tar@6.1.11 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/tar
chownr@2.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/chownr
fs-minipass@2.1.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/fs-minipass
minipass@3.1.6 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/minipass
yallist@4.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/minipass/node_modules/yallist
minizlib@2.1.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/minizlib
yallist@4.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/minizlib/node_modules/yallist
mkdirp@1.0.4 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/tar/node_modules/mkdirp
yallist@4.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/tar/node_modules/yallist
@types/bytebuffer@5.0.43 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/@types/bytebuffer
@types/long@4.0.2 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/@types/long
@types/node@17.0.38 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/@types/node
lodash.camelcase@4.3.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/lodash.camelcase
lodash.clone@4.5.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/lodash.clone
dtrace-provider@0.8.8 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/dtrace-provider
minimist@1.2.6 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/minimist
moment@2.29.3 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/moment
safe-json-stringify@1.2.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/safe-json-stringify
mkdirp@0.5.6 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/mkdirp
ncp@2.0.0 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/ncp
mv@2.1.1 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/mv
rimraf@2.4.5 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/mv/node_modules/rimraf
glob@6.0.4 /workspace/github.com/fabric/fabric-samples/fabcar/node_modules/mv/node_modules/glob

2. 所有问题均已解决

2.1 顺利运行 node enrollAdmin.js 、node registerUser.js 和 node query.js

node enrollAdmin.js
在这里插入图片描述

node registerUser.js
在这里插入图片描述

node query.js
在这里插入图片描述

运行过程

root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# node enrollAdmin.js 
 Store path:/workspace/github.com/fabric/fabric-samples/fabcar/hfc-key-store
Successfully enrolled admin user "admin"
Assigned the admin user to the fabric client ::{"name":"admin","mspid":"Org1MSP","roles":null,"affiliation":"","enrollmentSecret":"","enrollment":{"signingIdentity":"023bc0b2e1e553239d5deab97480b9cbb7f4e50834764121d02ff06202b56e9a","identity":{"certificate":"-----BEGIN CERTIFICATE-----\nMIICAjCCAaigAwIBAgIUYt/bc4AhzGphn8jazeml2SzOxmAwCgYIKoZIzj0EAwIw\nczELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNh\nbiBGcmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMT\nE2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMjIwNjA0MDE1ODAwWhcNMjMwNjA0MDIw\nMzAwWjAhMQ8wDQYDVQQLEwZjbGllbnQxDjAMBgNVBAMTBWFkbWluMFkwEwYHKoZI\nzj0CAQYIKoZIzj0DAQcDQgAEuDBqSgEivqNG7RgyIgy1TjzDYhl1ooYLWdRiFhXZ\nRT5lelS8Y0tlen6VJ5XbMEPFxGr0PljnOWmd7+8v0mX7kKNsMGowDgYDVR0PAQH/\nBAQDAgeAMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFF5kIsAkDiqPl8u3/olN6/qG\nWjpNMCsGA1UdIwQkMCKAIEI5qg3NdtruuLoM2nAYUdFFBNMarRst3dusalc2Xkl8\nMAoGCCqGSM49BAMCA0gAMEUCIQDzMb998V9ec3TiavS8heunEyI2mkmo1AosTG+9\nKSHy9wIgU+UqXdiQDNm6lCbLhTYZiVrbz4qe6ATJtkVWiVim6YQ=\n-----END CERTIFICATE-----\n"}}}
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# node registerUser.js 
 Store path:/workspace/github.com/fabric/fabric-samples/fabcar/hfc-key-store
Successfully loaded admin from persistence
Successfully registered user1 - secret:SbKwwpmtnGhJ
Successfully enrolled member user "user1" 
User1 was successfully registered and enrolled and is ready to intreact with the fabric network
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# node query.js 
Store path:/workspace/github.com/fabric/fabric-samples/fabcar/hfc-key-store
Successfully loaded user1 from persistence
Query has completed, checking results
Response is  [{"Key":"CAR0", "Record":{"colour":"blue","make":"Toyota","model":"Prius","owner":"Tomoko"}},{"Key":"CAR1", "Record":{"colour":"red","make":"Ford","model":"Mustang","owner":"Brad"}},{"Key":"CAR2", "Record":{"colour":"green","make":"Hyundai","model":"Tucson","owner":"Jin Soo"}},{"Key":"CAR3", "Record":{"colour":"yellow","make":"Volkswagen","model":"Passat","owner":"Max"}},{"Key":"CAR4", "Record":{"colour":"black","make":"Tesla","model":"S","owner":"Adriana"}},{"Key":"CAR5", "Record":{"colour":"purple","make":"Peugeot","model":"205","owner":"Michel"}},{"Key":"CAR6", "Record":{"colour":"white","make":"Chery","model":"S22L","owner":"Aarav"}},{"Key":"CAR7", "Record":{"colour":"violet","make":"Fiat","model":"Punto","owner":"Pari"}},{"Key":"CAR8", "Record":{"colour":"indigo","make":"Tata","model":"Nano","owner":"Valeria"}},{"Key":"CAR9", "Record":{"colour":"brown","make":"Holden","model":"Barina","owner":"Shotaro"}}]
2.2 修改JS脚本文件
2.2.1 query.js 修改——仅查询CAR1

在这里插入图片描述
在这里插入图片描述

root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# node query.js 
Store path:/workspace/github.com/fabric/fabric-samples/fabcar/hfc-key-store
Successfully loaded user1 from persistence
Query has completed, checking results
Response is  {"colour":"red","make":"Ford","model":"Mustang","owner":"Brad"}
2.2.2 invoke.js 修改
2.2.2.1 invoke.js 修改——添加CAR10

在这里插入图片描述
在这里插入图片描述

root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# node invoke.js 
Store path:/workspace/github.com/fabric/fabric-samples/fabcar/hfc-key-store
Successfully loaded user1 from persistence
Assigning transaction_id:  63cde15bb0939b8d17ddfa15b7361ca6e938b05e75b9c148581366c967e4a73f
Transaction proposal was good
Successfully sent Proposal and received ProposalResponse: Status - 200, message - "OK"
The transaction has been committed on peer localhost:7053
Send transaction promise and event listener promise have completed
Successfully sent transaction to the orderer.
Successfully committed the change to the ledger by the peer
2.2.2.2 query.js 修改——查询CAR10

在这里插入图片描述
在这里插入图片描述

root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# node query.js 
Store path:/workspace/github.com/fabric/fabric-samples/fabcar/hfc-key-store
Successfully loaded user1 from persistence
Query has completed, checking results
Response is  {"colour":"Red","make":"Chevy","model":"Volt","owner":"Nick"}
2.2.2.3 invoke.js 修改——更改CAR10所有者

在这里插入图片描述
在这里插入图片描述

root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# node invoke.js 
Store path:/workspace/github.com/fabric/fabric-samples/fabcar/hfc-key-store
Successfully loaded user1 from persistence
Assigning transaction_id:  28594736aedb8f265b34664753d9f3c09feb67ff432de7f42d9b9103fcd00a56
Transaction proposal was good
Successfully sent Proposal and received ProposalResponse: Status - 200, message - "OK"
The transaction has been committed on peer localhost:7053
Send transaction promise and event listener promise have completed
Successfully sent transaction to the orderer.
Successfully committed the change to the ledger by the peer
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# node query.js 
Store path:/workspace/github.com/fabric/fabric-samples/fabcar/hfc-key-store
Successfully loaded user1 from persistence
Query has completed, checking results
Response is  {"colour":"Red","make":"Chevy","model":"Volt","owner":"Jack"}

3. 关闭网络

rm -rf hfc-key-store/
cd ../basic-network/
./stop.sh 
./teardown.sh 
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)

运行过程

root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# ls
enrollAdmin.js  invoke.js     package.json       query.js         startFabric.sh
hfc-key-store   node_modules  package-lock.json  registerUser.js
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# rm -rf hfc-key-store/
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/fabcar# cd ../basic-network/
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/basic-network# ls
config         crypto-config       docker-compose.yml  init.sh    start.sh  teardown.sh
configtx.yaml  crypto-config.yaml  generate.sh         README.md  stop.sh
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/basic-network# ./stop.sh 

# Shut down the Docker containers that might be currently running.
docker-compose -f docker-compose.yml stop
Stopping cli                    ... done
Stopping peer0.org1.example.com ... done
Stopping ca.example.com         ... done
Stopping orderer.example.com    ... done
Stopping couchdb                ... done
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/basic-network# ./teardown.sh 
Removing cli                    ... done
Removing peer0.org1.example.com ... done
Removing ca.example.com         ... done
Removing orderer.example.com    ... done
Removing couchdb                ... done
Removing network net_basic
Error response from daemon: conflict: unable to delete 14da7b6e51bc (must be forced) - image is being used by stopped container 03c43f10abfd
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/basic-network# docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
03c43f10abfd
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/basic-network# docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)
03c43f10abfd
root@The-Land-Like-as-A-Picture:/workspace/github.com/fabric/fabric-samples/basic-network# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jack_August

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值