zoukankan      html  css  js  c++  java
  • Nodejs cannot find installed module on Windows

    Nodejs cannot find installed module on Windows

    问题

    I am learning nodejs at the moment on Windows. Several modules are installed globally with npm.cmd, and nodejs failed to find the installed modules. Take jade for example,

    npm install jade -g
    

    Jade is installed in directory "C:Program Files (x86) odejs ode_modules", but the following code will fail with a "Cannot find module 'jade'" error,

    var jade = require('jade');
    

    However, the code will run successfully when jade is locally installed (without -g option in npm). I don't want to use locally-installed modules, it's a waste of disk space for me. How can I make the globally-installed modules work on Windows?

    回答

    Add an environment variable called NODE_PATH and set it to %USERPROFILE%Application Data pm ode_modules (Windows XP), %AppData% pm ode_modules (Windows 7/8/10), or wherever npm ends up installing the modules on your Windows flavor. To be done with it once and for all, add this as a System variable in the Advanced tab of the System Properties dialog (run control.exe sysdm.cpl,System,3).

    Quick solution in Windows 7+ is to just run:

    rem for future
    setx NODE_PATH %AppData%
    pm
    ode_modules
    rem for current session
    set NODE_PATH=%AppData%
    pm
    ode_modules
    

    It's worth to mention that NODE_PATH is only used when importing modules in Node apps. When you want to use globally installed modules' binaries in your CLI you need to add it also to your PATH, but without node_modules part (for example %AppData% pm in Windows 7/8/10).


    Old story

    I'm pretty much new to node.js myself so I can be not entirely right but from my experience it's works this way:

    1. -g is not a way to install global libraries, it's only a way to place them on system path so you can call them from command line without writing the full path to them. It is useful, for example, then node app is converting local files, like less — if you install it globally you can use it in any directory.
    2. node.js itself didn't look at the npm global dir, it is using another algorithm to find required files: http://nodejs.org/api/modules.html#modules_file_modules (basically its scanning every folder in the path, starting from the current for node_modules folder and checks it).

    See similar question for more details: How do I install a module globally using npm?

    win10添加一个新的环境变量

    NODE_PATH   对应的值是%AppData% pm ode_modules

  • 相关阅读:
    网络基础知识:(一)网络分层和网络设备
    Hadoop集群的JobHistoryServer详解(转载)
    Hive 多分隔符的使用 (转载)
    linux下用iptables做本机端口转发方法(转载)
    Linux 学习笔记
    MySQL时间差返回月个数
    hive下UDF函数的使用
    hive分区(partition)
    hive导出查询文件到本地文件的2种办法
    000_Tomcat 部署配置
  • 原文地址:https://www.cnblogs.com/chucklu/p/14180053.html
Copyright © 2011-2022 走看看