Amit Kumawat Amit Kumawat - 11 months ago 66
Node.js Question

I am getting error as $ is not a function

var request = require("request"),
cheerio = require("cheerio"),
urls ,
url = "";
request(url, function (error, response, body) {
if (!error && response.statusCode==200) {
var $ = cheerio.load(body).html();
var teli = $('a.w3schools-logo').html();

i am getting error as

TypeError: $ is not a function
at Request._callback (C:\Users\AMIT\Desktop\project\demo.js:9:14)
at Request.self.callback (C:\Users\AMIT\Desktop\project\node_module \request\request.js:187:22)
at emitTwo (events.js:87:13)
at Request.emit (events.js:172:7)
at Request.<anonymous> (C:\Users\AMIT\Desktop\project\node_modules\request\request.js:1048:10)
at emitOne (events.js:77:13)
at Request.emit (events.js:169:7)
at IncomingMessage.<anonymous> (C:\Users\AMIT\Desktop\project\node_modules\request\request.js:969:12)
at emitNone (events.js:72:20)
at IncomingMessage.emit (events.js:166:7)

please help what can i do for this error

Answer Source

According to the cheerio page, the correct way to load it is:

var $ = cheerio.load(body); // <-- note no .html()!

Calling .html() returns the body as an HTML string, which is likely not what you intended to do. Instead, just drop it to get the jQuery instance $.