运行Web3.js查询以太坊账户余额报ERR_INVALID_ARG_TYPE错误如何解决?
报错解决方案
报错触发的原因是你代码第8行
const privatekey1 = Buffer.from(process.env.PRIVATE_KEY_1)执行时,process.env.PRIVATE_KEY_1的值为undefined,不符合Buffer.from对入参的类型要求,和你安装的web3、ethereumjs-tx包没有关系。
场景1:仅需要实现查询账户余额功能
查询以太坊地址余额不需要用到账户私钥,你可以直接删除代码中以下两行即可正常运行:
const privatekey1 = Buffer.from(process.env.PRIVATE_KEY_1) const privatekey2 = Buffer.from(process.env.PRIVATE_KEY_2)
删除后执行node app.js即可正常输出两个地址的余额。
场景2:后续需要用到私钥做签名、转账等操作,需要保留私钥定义代码
你需要给运行环境配置对应的环境变量,可选方案如下:
- 方案1:使用dotenv包管理环境变量
- 执行命令安装dotenv:
npm install dotenv - 在项目根目录新建
.env文件,写入以下内容(替换为你自己的账户私钥,私钥不要带0x前缀):
PRIVATE_KEY_1=你的第一个账户私钥 PRIVATE_KEY_2=你的第二个账户私钥
- 在app.js文件的第一行添加引入配置:
require('dotenv').config() - 重新执行
node app.js即可正常运行。
- 方案2:运行命令时临时注入环境变量
根据你使用的终端类型选择对应命令:- Windows CMD:
set PRIVATE_KEY_1=你的私钥1&& set PRIVATE_KEY_2=你的私钥2&& node app.js - Windows PowerShell:
$env:PRIVATE_KEY_1="你的私钥1"; $env:PRIVATE_KEY_2="你的私钥2"; node app.js - Linux/Mac 终端:
PRIVATE_KEY_1=你的私钥1 PRIVATE_KEY_2=你的私钥2 node app.js
- Windows CMD:
注意:私钥属于敏感信息,不要泄露给他人,使用dotenv方案时请将
.env文件加入.gitignore避免被提交到代码仓库。
内容的提问来源于stack exchange,提问作者Builtockchain
相关产品推荐
相关产品推荐

