Nodejs – 不能导入模块,除非使用完整的path

这里是新的node.js;

我安装了它,并试图使用w3模块(在Windows上)。

我已将全局repo位置更改为: C:\Users\<user>\.node_modules_global并使用命令bellow安装了web3模块,该命令在node_modules_global文件夹中创build了一个新文件夹;

 npm install ethereum/web3.js --global 

当我尝试跑步

Web3 = require('web3')它,我得到一个

Error: Cannot find module 'web3'

但是,如果我使用完整path:

 Web3 = require('C:\\Users\\<user>\\.node_modules_global\\node_modules\\web3') 

有用。 任何想法可能会导致这个问题? (我已将C:\\Users\\<user>\\.node_modules_global到SYSTEM PATH)

谢谢

您在全局安装它,因此将其保存到您的用户文件夹而不是在项目中,并且节点默认configuration为查看node_modules

两个选项来解决这个问题:

  • (a) 本地保存包
    • 只需使用npm install ethereum/web3.jsnpm install ethereum/web3.js --save将其安装到项目中的node_modules目录中即可。 (您必须首先将CD放入您的项目文件夹!)
  • (b) 默认情况下让节点在您的全局文件夹中查找
    • 使用"NODE_PATH": "C:\\Users\\<user>\\.node_modules_global\\node_modules"

如何在本地安装,以及如何全局安装

  • 要在本地安装模块,只需要执行npm install my-module ,或者如果你想把它添加到你的package.json中,那么执行npm install my-module --save
  • 要全局安装模块,请使用npm install my-module --global

何时使用本地和全局模块

你应该:

  • 在本地安装一个模块,如果你需要()它。
  • 如果要在命令行上运行,请全局安装模块。

来源: https : //nodejs.org/en/blog/npm/npm-1-0-global-vs-local-installation/

更改节点path

您可以将NODE_PATH环境variables设置为您自己的值,并且您的应用程序将默认查看,而不是项目node_modules目录。

请参阅: http : //nodejs.org/api/modules.html#modules_loading_from_the_global_folders