You need to enable JavaScript to run this app. 如何使用Fabric Node SDK客户端连接VSCode IBM区块链平台扩展的本地Fabric网络
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Fabric Node SDK客户端连接VSCode IBM区块链平台扩展的本地Fabric网络

可行性结论

完全可以直接使用扩展导出的连接配置、配套钱包,让运行Fabric Node SDK的客户端应用接入这个本地Fabric网络,不存在配置不兼容或者访问权限的阻碍。

  • 两类导出物料(connectionProfile连接配置、带身份凭证的钱包)本身就符合Fabric Gateway的标准接口规范,可直接被Fabric Node SDK(v2.4及以上适配Gateway API的版本)加载调用
  • 你观察到connectionProfile中缺失tlsCACerts路径等字段的情况属于正常现象,并非导出流程丢失关键信息:VSCode IBM区块链平台扩展启动的本地测试网络默认关闭节点间、客户端到节点的TLS加密,所有节点对外提供明文gRPC服务,本身没有需要校验的TLS CA证书,因此导出的配置不会填充这类字段
客户端连接的具体实现步骤
  • 第一步:确认网络连通性
    本地运行的Fabric网络默认会把Peer、Orderer节点的监听端口直接映射到宿主机,同机运行的Node SDK应用默认可以直接访问;如果客户端在其他主机运行,需要确认本机防火墙没有拦截对应的节点端口,同时把配置文件里所有指向localhost的地址替换为宿主机的实际局域网IP。
  • 第二步:完整导入导出的连接物料
    1. 将扩展导出的connectionProfile JSON文件放置到Node SDK应用的可访问路径下
    2. 将同批次导出的整个钱包目录(包含操作chaincode所用身份的证书、私钥)完整复制到项目目录下,不要拆分单独的身份文件,避免SDK找不到身份凭证
  • 第三步:按规范初始化SDK连接
    核心连接逻辑参考如下代码片段:
    const { Gateway, Wallets } = require('fabric-gateway');
    const fs = require('fs');
    const path = require('path');
    
    async function connectToLocalNetwork() {
        // 初始化文件系统钱包
        const wallet = await Wallets.newFileSystemWallet(
            path.resolve(__dirname, '你的导出钱包所在目录路径')
        );
        // 加载导出的连接配置文件
        const connectionProfile = JSON.parse(
            fs.readFileSync(path.resolve(__dirname, '你的导出connectionProfile.json路径'), 'utf8')
        );
        // 建立Gateway连接
        const gateway = new Gateway();
        await gateway.connect(connectionProfile, {
            wallet,
            // 替换为你在VSCode Fabric面板中操作chaincode时使用的身份名称
            identity: '你的操作身份名称',
            // 本地测试网络关闭节点自动发现,避免连接超时
            discovery: {
                enabled: false,
                asLocalhost: true
            }
        });
    
        // 后续可正常获取网络、合约实例执行操作
        const network = gateway.getNetwork('你的通道名称');
        const contract = network.getContract('已实例化的chaincode名称');
        // 示例:执行查询操作
        const queryResult = await contract.evaluateTransaction('你的查询方法名', '入参值');
        console.log('查询返回结果:', queryResult.toString());
    }
    
  • 第四步:TLS场景的适配处理
    如果后续你调整本地网络开启了TLS加密,只需要在导出的connectionProfile对应Peer、Orderer节点的配置块中,手动补充tlsCACerts字段,将本地网络生成的CA根证书以base64编码填入即可,SDK会自动完成证书校验流程,不需要重新从扩展导出配置。
常见踩坑提醒
  • 不要在连接本地测试网络时开启SDK的自动节点发现功能:VSCode扩展启动的极简本地网络没有配置完整的节点发现服务,开启后会因为发现流程超时导致连接失败,将discovery.enabled设置为false即可正常通信
  • 钱包中导入的身份必须和你安装、实例化chaincode时使用的身份完全一致,否则会因为通道权限校验不通过,出现invoke、query操作的权限报错
  • 不要直接修改导出的connectionProfile里的节点端口、地址信息,否则会导致SDK无法定位到正确的Peer、Orderer节点

内容的提问来源于stack exchange,提问作者inna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.01 01:54:02