• 关于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

  • 相关阅读:
    PHP输出中文乱码的问题(转)
    phpmyadmin导出数据库为什么是php文件
    phpmyadmin登陆提示#2002 无法登录 MySQL 服务器和设置自增
    phpMyAdmin配置及 错误 缺少 mysqli 扩展。请检查 PHP 配置
    利用eclipse开发php<转>
    apache 2.4 You don't have permission to access / on this server
    (转)如果“打开方式”里面没有想要的打开方式,怎样创建一种文件打开方式?
    (转)安装 Apache 出现 <OS 10013> 以一种访问权限不允许的方式做了一个访问套接字的尝试
    关于ISAPI和CGI限制,这个要设为允许
    Sqlserver数据库日志太大如何快速删除
  • 原文地址:https://www.cnblogs.com/miaodi/p/6607812.html
Copyright © 2020-2023  润新知