以太坊Web3.js返回“无法找到模块'web3-requestManager'”

16

我正在尝试在macosx上使用node 6.11.1和Ethereum Web3.js。

我使用以下命令安装了web3:

npm install web3

然后,我运行了这个看起来很简单的node命令:

Web3 = require('web3');

但它返回了以下错误:

module.js:471
    throw err;
    ^

Error: Cannot find module 'web3-requestManager'
    at Function.Module._resolveFilename (module.js:469:15)
    at Function.Module._load (module.js:417:25)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/Users/fremente/Dropbox/Influx Design/Web htdocs/ethereum/node_modules/web3/packages/web3-core/src/index.js:26:22)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)

看起来需要一些模块(例如 'web3-requestManager'),这些模块没有随该软件包一起安装。

这是我的 package.json 文件。

{
  "name": "ethereum",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "dependencies": {
    "ethereumjs-testrpc": "^4.0.1",
    "solc": "^0.4.13",
    "web3": "^1.0.0-beta2"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

有什么想法吗?我做错了什么吗?


只是为了完整性,这个问题在该库的git仓库中有一个未解决的问题:https://github.com/ethereum/web3.js/issues/966 - cyr_x
我打开了那个问题。 - Umberto Stanca
我解决了安装0.4版本的问题。 - Umberto Stanca
这是一个软件包重命名的问题,请在.bashrc中添加 NODE_PATH=${HOME}/node_modules。问题将会得到解决。 - Fullstack Developer
9个回答

16
npm install ethereum/web3.js

应该解决您的问题


我必须首先使用这个来清除上面的错误,然后我的 MetaMask 账户无法找到,所以我不得不使用 web3@1.0.0-beta.34 - Jonathan Scialpi

8
问题出在使用了 web3 的 beta 版本,目前还不稳定,并且正在积极开发中。你有两个选择:
  • 要么使用一个稳定的版本 0.23 或类似版本。
  • 要么手动安装所有所需的依赖项,但我不建议这种解决方案用于稳定的 dapp,因为目前情况非常不稳定。

目前它非常不稳定,尽管如此,我使用 Web.js v1.0-beta18 组合了一个示例仓库(它具有正确的依赖关系),可用于参考:https://github.com/leopoldjoy/react-ethereum-dapp-example - Leopold Joy
1
你是正确的,就像我在上面的解决方案中所说的那样,你可以手动安装所有依赖项,然后web3 v1.0将正常工作。然而,我注意到即使安装了所有依赖项,仍然存在一些边缘情况。老实说,这样的问题清楚地表明,目前不应该在任何生产代码中使用web 1.0v。 - Moe Elsharif

4

我通过删除node_modules文件夹,再次运行npm install并手动安装web3js,解决了这个问题。同时,在package.json中添加依赖项:

添加依赖到package.json

"web3": "^1.0.0-beta.31"

重建模块

rm -rf node_modules
npm install

手动安装web3

npm install web3@1.0.0-beta.31

2

npm install ethereum/web3.js 解决了我的问题。

希望它对你也有用。


2

0

我通过将版本固定在1.0.0-beta.29上解决了web3-requestManager问题。之前安装的是1.0.0-beta.2


0

我目前正在使用web3 1.0版本,并且我也在使用macOS。如果您也在使用此版本,请尝试以下操作:

Running npm install ethereum/web3.js

0

将 "react-scripts" 从 "5.0.0" 降级到 "4.0.3" 对我起了作用。


你好,请注意这个问题已经超过4年了,你提到的版本并不适用于原帖作者的环境。 - GrafiCode

0
我曾经遇到与之完全相同的问题:web3@1.0.0-beta.26 通过将Node版本从v6.11.3升级到v8.9.4,我已解决此问题。
我删除了node_modules文件夹并运行:npm install以重新构建模块。
我认为web3正在使用仅受Node 8.x.x版本支持的功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接