31
2023
05
01:23:49

关于npm安装全局模块,require时报Error: Cannot find module 'XXX'的解决办法

使用npm安装“cheerio”。


npm安装有两种模式:


本地 # npm install cheerio


全局 # npm install cheerio -g


如果想要全局安装,你首先要先设置个全局路径


我在"node的安装位置/lib/node_modules/"目录下新建了文件夹node_global专门用来存放新安装的全局包


# npm config set cache "node的安装位置/lib/node_modules/node_global"


# npm config set prefix "node的安装位置/lib/node_modules/node_global"


这个时候可以安装了


# npm install cheerio -g


安装好之后,赶紧打开node,试着require刚安装的全局包


var n = require(‘cheerio‘)

Error: Cannot find module ‘cheerio‘

at Function.Module._resolveFilename (module.js:469:15)

at Function.Module._load (module.js:417:25)


失败了!!!


网上查了一大堆博客,原来是忘了设置环境变量。


NODE_PATH


关键的地方来了:


NODE_PATH怎么写?


不要误以为就是你的刚设置的全局目录,我那样填写了。完全没用。


实际上你可以通过下面这个命令查看一下cheerio到底在哪里。然后NODE_PATH就设置哪里


#npm list -g


我的系统显示如下:


/usr/node-v6.10.0-linux-x64/lib/node_modules/node_global/lib

├─┬ cheerio@0.22.0

│ ├─┬ css-select@1.2.0

│ │ ├── boolbase@1.0.0

│ │ ├── css-what@2.1.0

│ │ ├── domutils@1.5.1

│ │ └── nth-check@1.0.1

│ ├─┬ dom-serializer@0.1.0

│ │ └── domelementtype@1.1.3

│ ├── entities@1.1.1

│ ├─┬ htmlparser2@3.9.2

│ │ ├── domelementtype@1.3.0

│ │ ├── domhandler@2.3.0

│ │ ├── inherits@2.0.3


我是这样配置的:


# vim /etc/profile


#添加下面两行


export NODE_HOME=/usr/node-v6.10.0-linux-x64/lib/node_modules/node_global

export NODE_PATH=$NODE_HOME:$NODE_HOME/lib/node_modules


保存退出


别忘了


# source /etc/profile 使其生效


再次测试require


[root@aliyun node-v6.10.0-linux-x64]#node

> var n = require(‘cheerio‘)


undefined

>


 


不再报错了!


总结:


想要在js文件中通过require(‘模块名’)来使用全局安装的模块,必须配置系统环境变量,才可使用。否则,执行时,会报错,意为:没有找到要使用的该模块。




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/4211.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: