我正在学习构建你的第一个区块链教程(https://www.youtube.com/watch?v=coQ5dg8wM2o&t=494s)。
我的index.html中包含以下内容:
<script src="https://cdn.jsdelivr.net/gh/ethereum/web3.js/dist/web3.min.js"></script>
<script src="vendor/truffle-contract/dist/truffle-contract.js"></script>
<script src="app.js"></script>
当我打开我的index.html页面时,我在控制台上得到以下错误:
(intermediate value).toBigNumber is not a function
at truffle-contract.js:16802
at Object.<anonymous> (truffle-contract.js:17735)
它发生在truffle-contract.js node_modules包代码中:
var BigNumber = (new Web3()).toBigNumber(0).constructor;
似乎web3.min.js文件不支持“toBigNumber”函数。我在package-lock.json中有以下依赖项:
"dependencies": {
"web3": {
"version": "0.20.6",
"resolved": "https://registry.npmjs.org/web3/-/web3-0.20.6.tgz",
"integrity": "sha1-PpcwauAk+yThCj11yIQwJWIhUSA=",
"dev": true,
"requires": {
"bignumber.js": "git+https://github.com/frozeman/bignumber.js-nolookahead.git",
"crypto-js": "^3.1.4",
"utf8": "^2.1.1",
"xhr2": "*",
"xmlhttprequest": "*"
}
}
}
不确定从哪里可以获得支持toBigNumber函数的正确web3.min.js文件
5条答案
按热度按时间inn6fuwd1#
我包含了这个版本的web3,而不是v=1.0.0
https://cdn.jsdelivr.net/gh/ethereum/web3.js@0.20.6/dist/web3.min.js
这修复了问题
1tuwyuhd2#
根本原因是因为教程使用了旧版本库,
我正在尝试相同的教程,得到了相同的问题和修复
1.更新软件包版本
1.更新索引. html
1.使用this link中的函数更新loadWeb3函数
});
1.更新loadContract函数
1.尝试重新启动浏览器并查看
fiei3ece3#
正如Mikko指出的,请使用最新的lib(v1.2)
您也可以在web3.utils.
web3.utils.toBN(number)
中使用“BN”作为BigNumberfjaof16o4#
我做了同样的教程,这是我如何修复我得到的所有错误
tsm1rwdh5#
更新web3.js cdn link为我修复了这个问题。大多数情况下,这个问题是由于包不一致造成的。