简体   繁体   English

将JQuery与Node.js一起使用“ ReferenceError:未定义$”

[英]Using JQuery with Node.js “ReferenceError: $ is not defined”

I am trying to build a simple IRC bot for Twitch in Node.js with this framework https://github.com/Schmoopiie/twitch-irc that can connect to the API and check certain things, in this reference I will be checking the followers on the current channel the bot is located in. Except I am running into an error, I keep getting this error logged below. 我正在尝试使用此框架https://github.com/Schmoopiie/twitch-irc为Node.js中的Twitch构建一个简单的IRC机器人,该机器人可以连接到API并检查某些内容,在此参考资料中,我将检查该机器人所在的当前频道上的关注者。除了遇到错误外,我一直在下面记录此错误。

[31mcrash[39m: ReferenceError: $ is not defined
    at client.<anonymous> (C:\Users\Exuviax\Desktop\node.js\bot.js:157:9)
    at client.emit (events.js:117:20)
    at C:\Users\Exuviax\Desktop\node.js\node_modules\twitch-irc\library\client.js:657:30
    at Object.createChannelUserData (C:\Users\Exuviax\Desktop\node.js\node_modules\twitch-irc\library\data.js:56:2)
    at client._handleMessage (C:\Users\Exuviax\Desktop\node.js\node_modules\twitch-irc\library\client.js:651:22)
    at Stream.emit (events.js:95:17)
    at drain (C:\Users\Exuviax\Desktop\node.js\node_modules\twitch-irc\node_modules\irc-message-stream\node_modules\through\index.js:36:16)
    at Stream.stream.queue.stream.push (C:\Users\Exuviax\Desktop\node.js\node_modules\twitch-irc\node_modules\irc-message-stream\node_modules\through\index.js:45:5)
    at LineStream.<anonymous> (C:\Users\Exuviax\Desktop\node.js\node_modules\twitch-irc\node_modules\irc-message-stream\index.js:22:16)
    at LineStream.emit (events.js:95:17)

This is the code that I am using to run, in order to check the API 这是我用来运行的代码,以检查API

var irc = require('twitch-irc');
var colors = require('colors');
var jQuery = require('jQuery')
var jsdom = require("jsdom");
var window = jsdom.jsdom().parentWindow;

jsdom.jQueryify(window, "http://code.jquery.com/jquery-2.1.3.min.js", function () {
  var $ = window.$;
  $("body").prepend("<h1>The title</h1>");
  console.log($("h1").html());
});

// Calling a new client..
var client = new irc.client({
    options: {
        debug: true,
        debugIgnore: ['ping', 'chat', 'action'],
        logging: true,
        tc: 3
    },
    identity: {
        username: 'BotName',
        password: 'oauth:Code'
    },
    channels: ['#my', '#first', '#connect', '#channels']
});

// Connect the client to server..
client.connect();

client.addListener('chat', function(channel, user, message) {
    if (message.indexOf('!followers') === 0) {
        var channels = channel
        channels = channels.replace('#', '');
        $.getJSON('https://api.twitch.tv/kraken/channels/' + channels + '.json?callback=?', function(data) {
            var followers = data.followers
            client.say(channel, "Current Followers: " + followers);
            console.log("Followers for " + channel + " " + followers);
        });
    }

});

I have been attempting to get this refferenceerror to go away for hours, but I am just not familiar enough with using JS and JQ outside of the browser environment to produce any results, any insight would be much appreciated. 我一直在尝试使这个refferenceerror消失数小时,但是我对在浏览器环境之外使用JS和JQ来产生任何结果还不够熟悉,因此,不胜感激。

Juhana Jan provided the correct answer in the comments to the original question: Juhana Jan在对原始问题的评论中提供了正确答案:

When you say var jQuery = require('jQuery') you're assigning jQuery to a variable called jQuery. 当您说var jQuery = require('jQuery')时,您是将jQuery分配给名为jQuery的变量。 If you want to use $ instead you'll have to do var $ = require('jQuery'). 如果要使用$,则必须执行var $ = require('jQuery')。 – Juhana Jan – Juhana Jan

Be sure to use the $ symbol equals require('jquery') inside each module you will be using jQuery. 一定要使用$符号等于require('jquery')你会使用jQuery每个模块

The proper syntax is: 正确的语法是:

var $ = require("jquery");

For more information visit package . 有关更多信息,请访问软件包

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM