zoukankan      html  css  js  c++  java
  • 关于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
    ├─┬ 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  #这是全局包lib库文件目录

    export PATH=$NODE_HOME/bin:$PATH  #这是全局包bin可执行文件的目录,不写这一行express会报“Express Command not found” 

    保存退出

    别忘了

    # source /etc/profile 使其生效

    再次测试require

    [root@aliyun node-v6.10.0-linux-x64]#node
    > var n = require('cheerio')

    undefined
    >

    不再报错了!

    (我的服务器配置:

    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
    export PATH=$JAVA_HOME/bin:$NODE_PATH:$NODE_HOME/bin:$PATH

  • 相关阅读:
    Java实现 蓝桥杯 算法提高 队列操作
    DUILIB创建不规则窗体,自定义控件(很不错的几十篇文章)
    修改窗口属性(全部都是SetWindowLong设置)
    搭建DirectUi开发平台
    _CrtSetBreakAlloc简单内存泄漏检测方法,解决Detected memory leaks!问题
    VLD(Visual LeakDetector)内存泄露库的使用
    设计模式之组合模式
    Moq的使用心得
    Moq 测试 属性,常用方法
    C#中Linq查询基本操作
  • 原文地址:https://www.cnblogs.com/miaodi/p/6607812.html
Copyright © 2011-2022 走看看