【问题标题】:Why `npm install -g` does not work for web3?为什么`npm install -g` 不适用于 web3?
【发布时间】:2018-09-04 01:02:09
【问题描述】:

当我运行npm install web3时,我可以正确运行以下nodejs文件。

$ cat main.js 
#!/usr/bin/env node
// vim: set noexpandtab tabstop=2:

const web3 = require('web3');
console.log(web3.utils.asciiToHex('I have 100!'));

如果我改为运行 npm install -g web3,则会收到以下错误。有谁知道为什么带有-g 的命令不起作用。谢谢。

$ ./main.js 
module.js:487
    throw err;
    ^

Error: Cannot find module 'web3'
    at Function.Module._resolveFilename (module.js:485:15)
    at Function.Module._load (module.js:437:25)
    at Module.require (module.js:513:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Users/xxx/linux/test/web/Node.js/module/web3/utils/main.js:4:14)
    at Module._compile (module.js:569:30)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)

【问题讨论】:

    标签: node.js npm web3js web3


    【解决方案1】:

    基本上,您正在尝试在您的机器上全局安装软件包。为此,您需要在 linux 或 Windows 中具有 root 访问权限,您必须在管理模式下运行 cmd。

    【讨论】:

      【解决方案2】:

      您以错误的方式使用npm install -g。由于您在本地调用 ./main.js,因此您需要将 web3 安装在本地 node_modules/ 文件夹中。

      npm install web3 应该足够了,没有-g

      【讨论】:

      • 我看到全局安装的其他模块可以工作。为什么web3 必须安装在本地的node_modules/ 文件夹中?
      • 这是因为当您require('web3') 时,它会隐式在node_modules 文件夹中查找相应的库。这就是为什么您必须执行 require('./web3') 之类的操作来导入同一文件夹中的实际内容
      • 在全局上安装东西可以让你在命令行中使用模块,但它不会将模块导入本地项目
      • @user1424739 如果 web3 是一个 cli 命令,您将在全局范围内安装它以便能够运行该 cli 命令,但您没有将它用作 cli 命令,您正在使用它作为代码中的依赖项。
      猜你喜欢
      • 1970-01-01
      • 2022-01-12
      • 2019-12-11
      • 1970-01-01
      • 2021-03-06
      • 1970-01-01
      • 2013-12-14
      • 2019-07-03
      • 1970-01-01
      相关资源
      最近更新 更多