Nodejs - 除非使用完整路径,否则无法导入模块
Posted
技术标签:
【中文标题】Nodejs - 除非使用完整路径,否则无法导入模块【英文标题】:Nodejs - Cant import module unless use the full path 【发布时间】:2018-04-20 03:58:38 【问题描述】:这里是 node.js 的新手;
我安装了它并尝试使用 w3 模块(在 Windows 上)。
我已将我的全球回购位置更改为:C:\Users\<user>\.node_modules_global
并使用下面的命令安装了 web3 模块,这在 node_modules_global 文件夹上创建了一个新文件夹;:
npm install ethereum/web3.js --global
当我尝试运行时
Web3 = require('web3')
它,我得到一个
Error: Cannot find module 'web3'
但是,如果我使用完整路径:
Web3 = require('C:\\Users\\<user>\\.node_modules_global\\node_modules\\web3')
它有效。
知道什么可能导致这个问题吗? (我已将C:\\Users\\<user>\\.node_modules_global
添加到系统路径)
谢谢
【问题讨论】:
你的 node_modules 环境路径设置为什么? Nodejs cannot find installed module on Windows?的可能重复 您需要在本地安装,而不是全局安装 ;) 只需删除-g
标志
检查这个:***.com/questions/15636367/…
【参考方案1】:
你在全局安装它,所以它被保存到你的用户文件夹中,而不是在项目中,并且节点默认配置为查看node_modules
。
解决此问题的两个选项:
(a) 在本地保存包 仅使用npm install ethereum/web3.js
或npm install ethereum/web3.js --save
将其安装到项目中的node_modules
目录。 (您必须先 cd 到您的项目文件夹!)
(b) 让 Node 默认在全局文件夹中查找
使用"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
何时使用本地和全局模块
你应该:
如果您要 require() 模块,请在本地安装它。 如果要在命令行上运行模块,请全局安装它。来源:https://nodejs.org/en/blog/npm/npm-1-0-global-vs-local-installation/
更改节点路径
您可以将NODE_PATH
环境变量设置为您自己的值,您的应用程序将默认查看那里,而不是项目node_modules
目录。
请看这里:http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
【讨论】:
有趣 - 如果我知道我会多次使用同一个包,我会尽量避免本地安装。你说的似乎有效,我只是收到一条消息:npm WARN saveError ENOENT: no such file or directory, open 'C:\git\Crypto\samples\eth1\package.json' 我应该担心吗?谢谢 这个警告可以通过创建一个 package.json 来修复,尝试破坏npm init
它会为你做一个 :) 这只是一个警告,而不是一个错误,所以没什么大不了的. package.json
用于跟踪您的所有依赖项,请参见此处:docs.npmjs.com/files/package.json以上是关于Nodejs - 除非使用完整路径,否则无法导入模块的主要内容,如果未能解决你的问题,请参考以下文章
除非刷新页面,否则React loadable无法在每个新构建上加载组件
Create React App 显示“除非提供 '--jsx' 标志,否则无法使用 JSX”