You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hyperledger Fabric Fabcar执行enrollAdmin.js遇ENOENT错误的解决方法

解决Fabric执行node enrollAdmin.js时的grpc目录缺失错误

嘿,这个问题我帮不少开发者踩过坑,本质就是grpc模块安装时没正确生成对应的二进制扩展文件,导致程序找不到那个指定的目录。下面给你几个经过验证的解决步骤,按顺序试就行:

第一步:清理现有依赖,重新安装

先切换到你的fabcar项目目录:

cd /Users/jaspalsingh/fabric-samples/fabcar

然后删掉已经安装的依赖包和锁文件,避免残留问题:

rm -rf node_modules package-lock.json

接着重新安装依赖,要是你的Node版本比较新,记得加--legacy-peer-deps参数来处理依赖冲突:

npm install --legacy-peer-deps

第二步:手动指定grpc的安装参数(适配Node版本)

如果第一步没用,大概率是你的Node版本和grpc版本不兼容。可以手动指定目标Node版本和平台来重装grpc:

npm install grpc --target=<你的Node版本号> --target_arch=x64 --target_platform=darwin

举个例子,要是你用的是Node v14.21.3,就执行:

npm install grpc --target=14.21.3 --target_arch=x64 --target_platform=darwin

提示:用node -v就能查看你的Node版本

第三步:改用fabric-network(长期解决方案)

Fabric官方早就不推荐直接依赖grpc了,fabric-network模块已经封装了所有需要的网络交互逻辑,还自动处理了grpc的兼容问题。你可以这么操作:

  1. 打开fabcar目录下的package.json,把里面旧的grpc相关依赖换成下面这样:
"dependencies": {
  "fabric-network": "^2.2.0",
  "fabric-ca-client": "^2.2.0"
}
  1. 再次清理依赖并重装:
rm -rf node_modules package-lock.json
npm install --legacy-peer-deps
  1. 最后修改enrollAdmin.js这类文件,把原来的const grpc = require('grpc')删掉,换成const { Wallets, Gateway } = require('fabric-network'),后续的交互逻辑也跟着改成fabric-network的用法就行。

第四步:检查Node版本是否符合Fabric要求

Fabric对Node版本卡得很严,比如2.x系列推荐用Node 12.x或14.x,要是你用的是v16+的高版本,很容易出兼容问题。可以用nvm来快速切换版本:

# 先装nvm(没装过的话)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
# 安装指定版本的Node
nvm install 14.21.3
# 切换到这个版本
nvm use 14.21.3

切换完版本后,再回去执行第一步的依赖安装。


额外小技巧:如果以上步骤都没搞定,试试清理grpc的缓存文件:

rm -rf ~/.npm/_npx/*
rm -rf ~/.node-gyp

然后重新安装依赖就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:19:49