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

Posted Meow~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于npm安装全局模块,require时报Error: Cannot find module 'XXX'的解决办法相关的知识,希望对你有一定的参考价值。

系统环境:centos

下午使用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
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]

我是这样配置的:

# 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

[[email protected] node-v6.10.0-linux-x64]#node
> var n = require(‘cheerio‘)

undefined
>

 

不再报错了!

以上是关于关于npm安装全局模块,require时报Error: Cannot find module 'XXX'的解决办法的主要内容,如果未能解决你的问题,请参考以下文章

nodejs require模块找不到怎么解决?

NPM 的包管理

关于 npm install 命令

npm全局安装包的原理

npm全局安装包的原理

npm全局安装包的原理