安装后找不到异步
Posted
技术标签:
【中文标题】安装后找不到异步【英文标题】:Can not find async after installation 【发布时间】:2014-02-08 09:24:58 【问题描述】:今天,我奇怪的是,在全局安装 async 后,nodejs 报告它找不到模块。以下是工作流程
安装异步
npm install -g async
确保异步存在
npm 列表 -g 异步
得到这个输出:
/usr/local/lib ├── async@0.2.9 └─┬ npm@1.3.21 └─┬ request@2.30.0 └─┬ form-data@0.1.2 └── async@0.2.93.尝试使用它。
我创建了一个简单的 js 文件,它只包含一个语句: var async=require('async'); 然后通过节点执行文件,我得到异常: 错误:找不到模块“异步” 在 Function.Module._resolveFilename (module.js:338:15) 在 Function.Module._load (module.js:280:25) 在 Module.require (module.js:364:17) 在需要 (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)【问题讨论】:
为什么要全局安装?通常,您全局安装的唯一东西是您依赖于可执行文件的软件包。 我也想知道为什么——不管最佳实践如何。我认为它会起作用 【参考方案1】:这是因为您正在全局安装异步。
npm install async
将创建一个名为node_modules
的目录,require
查找算法会在那里找到它。
【讨论】:
所以它从不查找全局安装?我全局安装它是因为我想在我的计算机的两个项目中使用它。 我知道我可以在没有 -g 选项的情况下使用它 iirc 当您尝试以编程方式使用模块时(即通过require
),它不会查找您的全局安装。两个不同的项目应该有自己的 package.json
文件,每个文件都具有 async 作为依赖项。【参考方案2】:
NPM 的全局安装并不总是意味着可以为多个项目共享该模块。这是一个非常流行的误解。您可以阅读this blog post on nodejs.org 了解更多信息,但一般来说,全局模块用于命令行工具和其他系统实用程序,而不是用于代码中的模块。
因此,理想情况下,您的每个项目都需要本地模块。
【讨论】:
【参考方案3】:全局安装异步。为此,我们必须创建和安装异步模块。
npm install async --save
此命令行在 node_modules 文件夹中添加文件。
【讨论】:
【参考方案4】:在多个项目中使用全局安装的模块的一种方法是使用npm link
命令
npm link
将在您的应用程序node_modules
目录中创建全局安装包的符号链接
【讨论】:
【参考方案5】:这对我有用:
npm卸载异步 npm install -g 异步 npm 链接异步【讨论】:
【参考方案6】:如果没有找到类似的任何模块 找不到模块“sql”,找不到模块“nodemailer” 然后使用 npm install 和找不到的模块名称。 npm 安装异步
【讨论】:
【参考方案7】:最后,我从 http://nodejs.org/api/modules.html 得到答案。
全局安装后,我需要把它的子目录放到 NODE_PATH 中,让它出现在节点的搜索路径中。
另外,正如文档所说,建议将模块存储在本地,NODE_PATH是为了版本兼容,我们不应该再使用它了。
【讨论】:
以上是关于安装后找不到异步的主要内容,如果未能解决你的问题,请参考以下文章
安装Anaconda3后,Spyder、Ipython等图标找不到