错误myFunction(...)。那么它不是一个函数

时间:2016-01-21 03:16:38

标签: javascript node.js request bluebird

我有以下模块基本上向Google执行GET请求:

// my-module.js
var request = require('request');
var BPromise = require('bluebird');

module.exports = get;

function get() {
    return BPromise.promisify(doRequest);
}

function doRequest(callback) {
    request.get({
        uri: "http://google.com",
    }, function (err, res, body) {
        if (!err && res.statusCode == 200) {
            callback(null, body);
        }
        else {
            callback(err, null);
        }
    });
}

我想像这样使用这个模块:

//use-module.js
var myModule = require('./my-module');

myModule().then(function (body) {
     console.log(body);
});

我面临的错误如下:

myModule(...).then is not a function.

我做错了什么?

1 个答案:

答案 0 :(得分:1)

BPromise.promisify(doRequest)不会调用doRequest,但会返回"已宣告的"}该功能的版本。你应该这样做一次,而不是每次通话。这应该有效:

module.exports = BPromise.promisify(doRequest);