我正在尝试运行这个简单的代码,使用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
并且没有任何改变,我无法在任何地方找到此错误。
可能是什么问题?
答案 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
希望它有所帮助,