以太坊 Web3.js 返回“找不到模块‘web3-requestManager’”

Posted

技术标签:

【中文标题】以太坊 Web3.js 返回“找不到模块‘web3-requestManager’”【英文标题】:Ethereum Web3.js returns "Cannot find module 'web3-requestManager'" 【发布时间】:2018-01-07 15:15:40 【问题描述】:

我正在尝试在 macosx 上开始使用带有节点 6.11.1 的 Ethereum Web3.js

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

npm 安装 web3

然后我启动这个 - 显然 - 简单的节点命令:

Web3 = 要求('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 repo 中有一个未解决的问题:github.com/ethereum/web3.js/issues/966 我打开了那个问题???? 我解决了安装 0.4 版本 这是一个包重命名问题,请在 .bashrc NODE_PATH=$HOME/node_modules 中添加。问题就解决了。 【参考方案1】:
npm install ethereum/web3.js

应该能解决你的问题

【讨论】:

我必须先使用它来清除上面的错误,然后找不到我的元掩码帐户,所以我不得不使用 web3@1.0.0-beta.34【参考方案2】:

问题来自于使用 web3 的 beta 版本,它目前不稳定,目前正在大量开发中,您有两种选择之一,

使用我认为的稳定版本 0.23 或类似的东西

或手动安装所有需要的依赖项,我不推荐此解决方案用于稳定的 dapp,因为目前情况确实不稳定

【讨论】:

目前它非常不稳定,但我使用Web.js v1.0-beta18 整理了一个示例repo,它确实有效(它具有正确的依赖关系):github.com/leopoldjoy/react-ethereum-dapp-example 你是对的,就像我在上面的解决方案中所说的那样,你可以手动安装所有依赖项,web3 v1.0 可以工作,但是,即使在安装了所有依赖项之后,我也注意到了一些边缘情况,老实说,像这样的问题这些清楚地表明 web 1.0v 目前不应该用于任何生产代码。【参考方案3】:

我通过删除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

【讨论】:

【参考方案4】:

在我的 Windows 10 机器上安装 git 有帮助。没有它,依赖项无法正确安装。 https://git-scm.com/downloads

【讨论】:

【参考方案5】:

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

希望它也对你有用。

【讨论】:

【参考方案6】:

我正面临着这个确切的问题:web3@1.0.0-beta.26

我已通过将节点从 v6.11.3 升级到 v8.9.4 来解决此问题。

我已删除 node_modules 文件夹并运行:npm install 以重建模块。

我认为 web3 正在使用仅受节点版本 8.x.x 支持的功能。

【讨论】:

【参考方案7】:

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

【讨论】:

【参考方案8】:

我目前使用的是 web3 1.0 版本。我也在使用 macOS。如果你也在使用这个版本,试试这个:

Running npm install ethereum/web3.js

【讨论】:

以上是关于以太坊 Web3.js 返回“找不到模块‘web3-requestManager’”的主要内容,如果未能解决你的问题,请参考以下文章

以太坊系列 - Web3.js

web3.js链接以太坊并查询钱包u余额

以太坊 web3.js 文档翻译及说明

Web3.js的基本使用(与以太坊智能合约的交互)

从 Metamask 获取所有以太坊账户

如何通过web3.js通过余额获得前N个以太坊账户?