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)
4

5 回答 5

14

您可能需要在本地安装 bluebird 软件包。尝试

npm install --save bluebird
于 2015-07-13T08:35:48.353 回答
1

在我的情况下,Bluebird 文件夹被称为“bluebird”,我将它作为“Bluebird”导入(大写“B”),所以我将导入字符串更改为“bluebird”(我在 linux 上工作)。

希望这可以帮助某人。

于 2019-06-24T00:08:00.930 回答
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 中查找模块的描述。

于 2020-04-12T04:04:27.237 回答
0

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

我的解决方案是:

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

那么一切都好。

于 2019-04-11T02:29:32.893 回答
-1

我有同样的问题。看起来好像bluebird没有用它下载,index.js这会将所有功能公开为一个模块。

如果你cd进入node_modules/bluebird你可能会看到它确实存在,但没有index.js。由于没有index.js节点不知道如何要求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 版本。

于 2017-06-21T15:25:34.763 回答