安装后找不到异步

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.9

3.尝试使用它。

我创建了一个简单的 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等图标找不到

安装后找不到 Truffle 命令

我手机是小米,安装完Google框架后找不到设置里的Google账号,Google安全码

MATLAB7.0安装后,启动弹出找不到指定的模块

通过 npm 安装后找不到 yarn 命令

安装 nginx 后找不到 Laravel 路由