安装后找不到异步

时间:2014-01-19 04:19:15

标签: node.js npm

今天,我感到奇怪的是,在全局安装async后,nodejs报告无法找到该模块。以下是工作流程

  1. 安装异步

    npm install -g async

  2. 确保异步存在

    npm list -g async

  3. 得到这个输出:

    /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.使用它。

    I create a simple js file which only contains one statement:
    var async=require('async');
    then execute the file via node, I get exception:
    
    Error: Cannot find module 'async'
        at Function.Module._resolveFilename (module.js:338:15)
        at Function.Module._load (module.js:280:25)
        at Module.require (module.js:364:17)
        at require (module.js:380:17)
        at Object. (/lxzhu/nodejs/asynctest/test.js:1:73)
        at Module._compile (module.js:456:26)
        at Object.Module._extensions..js (module.js:474:10)
        at Module.load (module.js:356:32)
        at Function.Module._load (module.js:312:12)
        at Function.Module.runMain (module.js:497:10)
    

7 个答案:

答案 0 :(得分:23)

这是因为您要在全局安装异步。

npm install async将创建一个名为node_modules的目录,require查找算法会在那里找到它。

答案 1 :(得分:6)

NPM的全局安装并不总是意味着可以为多个项目共享该模块。这是一个非常流行的误解。您可以阅读this blog post on nodejs.org以获取更多信息,但一般来说,全局模块用于命令行工具和其他系统实用程序,而不是用于代码中使用的模块。

因此,理想情况下,您需要在本地为每个项目使用模块。

答案 2 :(得分:4)

全局安装异步。为此,我们必须创建和安装async模块。

npm install async --save

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

答案 3 :(得分:1)

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

npm link将在您的应用node_modules目录中创建全局安装包的符号链接

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

答案 4 :(得分:0)

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

全局安装后,我需要将其子目录放到NODE_PATH中,使其出现在节点的搜索路径中。

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

答案 5 :(得分:0)

如果找不到类似的模块
找不到模块“ sql”,找不到模块“ nodemailer” 然后使用npm install和找不到的模块名称。 npm安装异步

答案 6 :(得分:0)

这对我有用:

npm uninstall async
npm install -g async
npm link async