安装后找不到asynchronous

今天,我得到奇怪的事情,我在全球安装asynchronous后,nodejs报告它找不到模块。以下是工作stream

  1. 安装asynchronous

    npm安装-gasynchronous

  2. 确保asynchronous存在

    npm列表-gasynchronous

得到这个输出:

在/ usr / local / lib目录
 ├──async@0.2.9
 └─┬npm@1.3.21
   └─┬request@2.30.0
     └─┬form-data@0.1.2
       └──async@0.2.9 

3.使用它。

我创build了一个简单的js文件,它只包含一个语句:
 var async = require('async');
然后通过节点执行文件,我得到exception:
错误:无法find模块“asynchronous”
    在Function.Module._resolveFilename(module.js:338:15)
    在Function.Module._load(module.js:280:25)
    在Module.require(module.js:364:17)
    在require(module.js:380:17)
    在对象。  (/lxzhu/nodejs/asynctest/test.js:1:73)
    在Module._compile(module.js:456:26)
    在Object.Module._extensions..js(module.js:474:10)
    在Module.load(module.js:356:32)
    在Function.Module._load(module.js:312:12)
    在Function.Module.runMain(module.js:497:10)

这是因为你正在全球安装asynchronous。

npm install async将会创build一个名为node_modules的目录,并且require查找algorithm会在那里find它。

全局安装NPM并不总是意味着该模块可以共享多个项目。 这是一个相当普遍的误解。 您可以在nodejs.org上阅读此博客文章以获取更多信息,但是一般来说,全局模块用于命令行工具和其他系统实用程序,而不是用于代码中的模块。

所以,理想情况下,您需要本地模块为您的每个项目。

asynchronous安装在全球。 为此,我们必须创build并安装asynchronous模块。

npm安装asynchronous – 保存

这个命令行在node_modules文件夹中添加文件。

在多个项目中使用全局安装模块的正确方法是使用npm link命令

npm link将创build全局安装包的符号链接到您的应用程序node_modules目录中

编辑:因为npm @ 5做一个本地安装npm install foo将从系统caching链接到类似于纱线的策略。 因此,即使全局安装了相同的模块,也可以使用本地npm install

最后,我从http://nodejs.org/api/modules.html得到答案。

在全局安装后,我需要把它的子目录放到NODE_PATH中,使它出现在节点的searchpath中。

另外,正如文档所述,build议在本地存储模块,NODE_PATH用于版本兼容性,我们不应该再使用它。