安装后找不到asynchronous
今天,我得到奇怪的事情,我在全球安装asynchronous后,nodejs报告它找不到模块。以下是工作stream
-
安装asynchronous
npm安装-gasynchronous
-
确保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用于版本兼容性,我们不应该再使用它。