Node.js + browserify - 错误:无法找到模块' cls-bluebird'

时间:2016-06-02 08:22:57

标签: node.js browserify

我正在尝试运行这个简单的代码,使用node.js模型在我的浏览器上运行 - 使用browserify。

test2.js:

var gplay = require('google-play-scraper');

function get_vars(){

    var keyword = document.getElementById("keyword");
    var limit   = document.getElementById("limit");

    console.log(keyword);
    console.log(limit);

    get_search_results(keyword, limit);

}

function get_search_results(keyword, limit){


    gplay.search({
        term: keyword,
        num: limit
      }).then(console.log, console.log);

}

index.html:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript" src="test2.js"></script>
</head>
<body>

<input type="text" name="keyword" id="keyword" />
<input type="text" name="limit" id="limit">

<button onclick="get_vars();">GO!</button>

</body>
</html>

每当我在CMD上运行browserify test2.js -o bundle2.js时,我都会得到这个输出:

Error: Cannot find module 'cls-bluebird' from 'C:\wamp\www\nodetest\node_modules\request-promise\lib'
    at C:\Users\banana\AppData\Roaming\npm\node_modules\browserify\node_modules\resolve\lib\async.js:46:17
    at process (C:\Users\banana\AppData\Roaming\npm\node_modules\browserify\node_modules\resolve\lib\async.js:173:43)
    at ondir (C:\Users\banana\AppData\Roaming\npm\node_modules\browserify\node_modules\resolve\lib\async.js:188:17)
    at load (C:\Users\banana\AppData\Roaming\npm\node_modules\browserify\node_modules\resolve\lib\async.js:69:43)
    at onex (C:\Users\banana\AppData\Roaming\npm\node_modules\browserify\node_modules\resolve\lib\async.js:92:31)
    at C:\Users\banana\AppData\Roaming\npm\node_modules\browserify\node_modules\resolve\lib\async.js:22:47
    at FSReqWrap.oncomplete (fs.js:117:15)

尝试安装npm install bluebird并且没有任何改变,我无法在任何地方找到此错误。

可能是什么问题?

2 个答案:

答案 0 :(得分:2)

cls-bluebird被定义为request-promise的开发依赖关系(google-play-scraper又使用了它)。

cls-bluebird中使用request-promise的方式“混淆”Browserify认为它是常规依赖项,因此它会尝试将其包含在生成的包中。但是因为在npm install PACKAGE期间通常不会安装dev依赖项,所以它会丢失并且您会收到有关缺少模块的错误。

最简单的解决方案是手动安装cls-bluebird

$ npm i cls-bluebird

这允许Browserify找到它。如果您拥有自己的--save,则可以添加package.json

或者,您可以使用所有dev依赖项安装google-play-scraper

$ npm i google-play-scraper --dev

但是,这将为所有 google-play-scraper依赖的模块安装所有 dev依赖项,这会导致安装需要很长时间。

答案 1 :(得分:0)

您是否按照以下步骤操作:

npm install --save bluebird

var Promise = require("bluebird");

To enable long stack traces and warnings in node development:

$ NODE_ENV=development node server.js

To enable long stack traces and warnings in node production:

$ BLUEBIRD_DEBUG=1 node server.js

See Environment Variables.

自:

http://bluebirdjs.com/docs/install.html

你可以找到类似的错误,以及解决它的不同命题:

https://github.com/request/request-promise/issues/91

希望它有所帮助,