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.js
或npm 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