项目场景:

在使用web3.js去连接本地私链的时候,web3出现连接异常
在这里插入图片描述


问题描述

在明明已经导入了Web3的情况下,还是提示 Web3 在这个上下文中并不是一个构造函数,说明没有导入web3成功,会出现一个错误

const web3 = new Web3(‘http://127.0.0.1:8888’);
^
TypeError: Web3 is not a constructor
at Object. (D:\hjy\DAPP学习\先锋积分\react_activity\src\contract\deploy.js:33:14)
at Module._compile (node:internal/modules/cjs/loader:1254:14)
at Module._extensions…js (node:internal/modules/cjs/loader:1308:10)
at Module.load (node:internal/modules/cjs/loader:1117:32)
at Module._load (node:internal/modules/cjs/loader:958:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:23:47
Node.js v18.15.0

const Web3 = require('web3');

在这里插入图片描述


原因分析:

Web3.js 4.x 引入了一些变化,其中之一是更改了导入 Web3 对象的方式。在 4.x 版本中,你应该使用对象解构来导入 Web3,而不是直接导入整个 Web3 模块。

可以查看自己下载的web3模块是多少版本的,输入npm list web3,可以看到现在下载的是4.8版本的web3
在这里插入图片描述


解决方案:

在4.x版本中不能直接const Web3 = require('web3');,要通过解构得到Web3对象,所以可以从 Web3 模块中解构出 Web3 对象

const { Web3 } = require('web3');
Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐