Node.js 切里奥与蓝鸟的承诺擦肩而过

Node.js 切里奥与蓝鸟的承诺擦肩而过,node.js,bluebird,cheerio,request-promise,Node.js,Bluebird,Cheerio,Request Promise,为什么这个代码不起作用?我明白了 TypeError: $ is not a function test.js 'use strict'; var Promise = require('bluebird'); var request = require('request-promise'); var cheerio = require('cheerio'); module.exports = { get: function () { return new Prom

为什么这个代码不起作用?我明白了

TypeError: $ is not a function
test.js

'use strict';

var Promise = require('bluebird');
var request = require('request-promise');
var cheerio = require('cheerio');

module.exports = {
    get: function () {

        return new Promise(function (resolve, reject) {
            var options = {
                uri: 'https://www.example.com',
                transorm: function (body) {
                    return cheerio.load(body);
                }
            };

            request(options)
                .then(function ($) {
                    // Error happens here
                    $('#mydivid').text();
                    resolve();
                })
                .catch(function (error) {
                    console.log(error);
                    reject(error);
                });
        });
    }
}

我又看了一眼,发现了问题所在。您的
选项
对象如下所示:

 var options = {
                uri: 'https://www.example.com',
                transorm: function (body) {
                    return cheerio.load(body);
                }
 };
您使用了
transorm
而不是
transform
。因此,它将返回html内容字符串,而不是
cheerio.load(body)
。将其更改为
transform
即可

 var options = {
                uri: 'https://www.example.com',
                transform: function (body) {
                    return cheerio.load(body);
                }
 };

如果这是一个前端代码,您是否包括jquery?$只是cheerio.load(body)的占位符;,我没有在这里使用jQuery(即使cheerio与之类似)。请尝试用
cheerio
替换$对不起,您的建议无效。这样,“transform”函数就没用了。你只是改变了逻辑。既然你不接受我的回答,我想再看一眼。猜猜我发现了什么问题。请参阅我的最新答案。