Node.js错误:错误:找不到模块“bluebird”。

4

当我尝试这样做时,它会抛出一个错误,我该怎么解决?

$ hexo generate
ERROR Error: Cannot find module 'bluebird'
    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.<anonymous> (/Users/lihz/blog/node_modules/hexo/lib/hexo/index.js:3:15)
    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 Module.require (module.js:364:17)
    at require (module.js:380:17)
    at /usr/local/lib/node_modules/hexo-cli/lib/index.js:73:18
    at tryCatcher (/usr/local/lib/node_modules/hexo-cli/node_modules/bluebird/js/main/util.js:26:23)
    at Promise._settlePromiseFromHandler (/usr/local/lib/node_modules/hexo-cli/node_modules/bluebird/js/main/promise.js:489:31)
    at Promise._settlePromiseAt (/usr/local/lib/node_modules/hexo-cli/node_modules/bluebird/js/main/promise.js:565:18)
    at Promise._settlePromises (/usr/local/lib/node_modules/hexo-cli/node_modules/bluebird/js/main/promise.js:681:14)
Unhandled rejection TypeError: Cannot call method 'then' of undefined
    at /usr/local/lib/node_modules/hexo-cli/lib/index.js:82:22
    at tryCatcher (/usr/local/lib/node_modules/hexo-cli/node_modules/bluebird/js/main/util.js:26:23)
    at Promise._settlePromiseFromHandler (/usr/local/lib/node_modules/hexo-cli/node_modules/bluebird/js/main/promise.js:489:31)
    at Promise._settlePromiseAt (/usr/local/lib/node_modules/hexo-cli/node_modules/bluebird/js/main/promise.js:565:18)
    at Async._drainQueue (/usr/local/lib/node_modules/hexo-cli/node_modules/bluebird/js/main/async.js:128:12)
    at Async._drainQueues (/usr/local/lib/node_modules/hexo-cli/node_modules/bluebird/js/main/async.js:133:10)
    at Async.drainQueues (/usr/local/lib/node_modules/hexo-cli/node_modules/bluebird/js/main/async.js:15:14)
    at process._tickCallback (node.js:442:13)
5个回答

16

你可能需要在本地安装bluebird包。尝试:

npm install --save bluebird

1
在我的情况下,Bluebird文件夹被称为“bluebird”,而我将其导入为“Bluebird”(B大写),所以我将导入字符串更改为“bluebird”(我正在Linux上工作)。
希望这能帮助到某些人。

0
在我的情况下,当我将bluebird安装在错误的目录中时,就会出现这个错误。
当我从我的主目录下载Bluebird时,
myuser@raspberrypi:~ $ sudo npm install --save bluebird
它被安装在~/node_modules(这样做时我得到了一些警告),我必须使用以下方式来包含它:
var Promise = require('/usr/lib/node_modules/bluebird');


当我使用以下命令从/usr/lib目录安装Bluebird时

myuser@raspberrypi:/usr/lib $ sudo npm install --save bluebird

(没有警告),它被安装在/usr/lib/node_modules中(旁边是现有的npm目录)。 我必须通过使用以下方式将其包含:

var Promise = require('/usr/lib/node_modules/bluebird');

因此,请确保您知道模块安装的位置,并相应地引用它。通常情况下,这里是描述require在nodejs中查找模块的位置。


0

我通常使用注册表来安装模块。但是在下载hexo-cli时,我忘记了这一点。当我运行hexo时,它会响应我“找不到bluebird”,即使它已经被安装。

我的解决方案是:

再次使用注册表安装hexo-cli。

然后一切都好了。


-1

我遇到了同样的问题。看起来 bluebird 没有下载它的 index.js,这将把所有函数公开为一个模块。

如果你进入 node_modules/bluebird,你可能会发现它确实存在,但没有 index.js。由于没有 index.js,Node 不知道如何要求 bluebird


这里有一些可以尝试的项目:

  1. 如果您使用“代理”npm仓库,请在从该仓库拉取的所有软件包上放置一个命名空间,然后编辑您的npm配置文件,从公共NPM上拉取所有软件包,除非它们被命名空间限定为从您的私有NPM仓库获取。以下是如何将配置范围限定于作用域的示例。

    registry=https://registry.npmjs.org/
    @dog:registry=https://npm.dog.com/
    @dog:always-auth=true
    //npm.dog.com/:_authToken="XXXXXXXXXXXX"
    @dog:cafile=/Users/dogboy/.ssh/dogtown.crt
    
  2. 升级NPM版本。


你最终解决了这个问题吗? - Big Money
你修好了这个吗? - Balasubramani M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接