运行OrbitDB示例报IPFSAccessController.save废弃错误如何修复
问题根因
错误由AvionDB维护停滞,依赖的旧版OrbitDB生态组件与新版js-ipfs、multiformats库不兼容导致:
- 旧版
orbit-db-io仍调用已废弃的CID.toBaseEncodedString()方法,新版multiformats已移除该方法,仅支持CID.toString() - 版本不匹配导致IPFS权限控制器写入时生成undefined字段,触发IPLD的DAG-CBOR编码规则报错
解决方案
方案1:锁定兼容版本安装(最稳定)
AvionDB最后稳定兼容的依赖版本固定,按以下步骤操作即可:
- 删除项目中现有的
node_modules文件夹和package-lock.json文件 - 修改
package.json中的依赖版本为以下内容:
{ "dependencies": { "ipfs": "^0.54.4", "orbit-db": "^0.26.1", "aviondb": "^0.2.2" } }
- 执行
npm install重新安装依赖,完成后即可正常运行示例代码
方案2:临时修复(无需更换版本)
如果必须使用更高版本的IPFS,可以直接修改依赖中的报错代码:
- 打开项目下的
node_modules/aviondb/node_modules/orbit-db-access-controllers/node_modules/orbit-db-io/index.js文件 - 找到第62行调用
cid.toBaseEncodedString()的代码,替换为cid.toString() - 保存文件后重新运行代码即可
补充优化建议
原示例代码未添加异步错误捕获,建议修改入口调用逻辑,方便后续问题排查:
main().catch(err => console.error('程序运行错误:', err))
内容的提问来源于stack exchange,提问作者zidanow
相关产品推荐
相关产品推荐

