2016-06-02 20 views
0

ブラウザでnode.jsモデルを使用してこの簡単なコードを実行しようとしています。Node.js + browserify - エラー: 'cls-bluebird'モジュールを見つけることができません

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を実行するたびに、私はこの出力を得る:

npm install bluebirdと何もISNをインストールしようとしました
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) 

私はどこでもこのエラーを見つけることはできません。

何が問題なのですか?

答えて

2

cls-bluebirdは、dev依存性request-promise(これは、google-play-scraperによって順番に使用されます)と定義されています。

request-promiseではcls-bluebirdが使用されています.Browserifyは通常の依存関係であると考えて「混乱」するため、生成されたバンドルに含めようとします。しかし、dev依存関係は通常npm install PACKAGEの間にインストールされていないので、モジュールが見つからず、モジュールが見つからないというエラーが表示されます。

最も簡単な解決策は、単に手動でcls-bluebirdをインストールすることです:

$ npm i cls-bluebird 

Browserifyがそれを見つけることができること。独自のpackage.jsonがある場合は、--saveを追加できます。

また、あなたはすべてのdevの依存関係google-play-scraperをインストールすることができます。

$ npm i google-play-scraper --dev 

しかし、インストールすることができためすべてのdevの依存関係google-play-scraperが依存するすべてのモジュールをインストールすることは、長い間を取ります時間。

+0

ありがとうございます! しかし、今度はコンソールから別のエラーが表示されます。最初の.jsファイルの機能を認識しません のの 'Uncaught ReferenceError:get_varsは定義されていません@ 13:12:'は本当にNODEです。JSと現在の学習 - パッケージや構造の基本的な使い方の良いコースやチュートリアルがありますか? 私が見つけた唯一のものは、技術的で、管理についてのものはそれほどありませんでした。 –

+0

例えば、node.jsのDEVが何か知っていると分かります(この例のようです)。 –

+0

@RickSanchez良いコースやチュートリアルがわからないので、何もお勧めできません。 Browserifyの場合は、[このページ](http://browserify.org/articles.html)で始めるのがよいでしょう(しかし、私はBrowserifyが比較的高度なテーマであると言わなければなりません。 Browserifyがしていることとしていないことを理解できるようにするためのNodeの合理的な理解)TBH:あなたが遭遇した問題は経験不足ではなく、 'request-promise'が構造化されている方法と関係しています。 Browserifyを混乱させる。 – robertklep

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

を希望が助けてくれる、