使用Node.js和Solana web3.js开发模因币交易Bot时遇bs58.decode非函数的TypeError错误
使用Node.js和Solana web3.js开发模因币交易Bot时遇bs58.decode非函数的TypeError错误
嘿,我之前折腾Solana Bot的时候也碰到过一模一样的报错,别发愁,这个问题基本上是bs58模块的导入方式或者版本兼容搞的鬼,咱们一步步来搞定它:
先搞清楚错误根源
这个报错说明你调用bs58.decode()的时候,bs58对象里根本没有decode这个方法,大概率是因为bs58的版本更新后导出方式变了。
解决方法分两种情况:
如果用的是bs58 v5及以上版本
新版本的bs58改成了ES模块风格的默认导出,不再把decode挂载在导出的对象上了。如果你还是用CommonJS的require导入,就会出问题。
之前你可能写的是:const bs58 = require('bs58'); bs58.decode(yourAddress); // 这里就会报错改成下面两种方式都可以:
// 方案1:用default导出 const decode = require('bs58').default; decode(yourAddress); // 方案2:切换成ES模块导入(需要把文件后缀改成.mjs,或者在package.json里加"type": "module") import decode from 'bs58'; decode(yourAddress);不想改代码?直接降级版本
如果你懒得调整导入方式,也可以把bs58降级到v4.x版本,这个版本还是沿用旧的CommonJS导出方式,直接用const bs58 = require('bs58')就能正常调用bs58.decode()。执行下面的命令就行:npm install bs58@4.0.1
额外排查小技巧
- 先确认你项目里bs58的实际版本,执行
npm list bs58就能看到版本号,快速判断是新老版本的问题。 - 有时候Solana web3.js本身也依赖bs58,如果你的项目里单独装的bs58版本和web3.js依赖的版本冲突,也可能出问题。这时候可以试试删掉
node_modules和package-lock.json,然后重新跑npm install,让所有依赖版本对齐。
备注:内容来源于stack exchange,提问作者Linda Baptiste
相关产品推荐
相关产品推荐

