Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ReferenceError: _ is not defined

I am using a jQuery based WordPress Twitter widget and receive the error "ReferenceError: _ is not defined".

Am not sure how to declare the variable "_".

Here is the widget:

<script type="text/javascript">     <!--//--><![CDATA[//><!--          function twitterCallback2(twitters) {              var statusHTML = [];             for (var i=0; i<twitters.length; i++){                 var username = twitters[i].user.screen_name;                 var status = twitters[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) {                     return '<a href="'+url+'">'+url+'</a>';                 }).replace(/\B@([_a-z0-9]+)/ig, function(reply) {                     return  reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>';                 });                 statusHTML.push( '\                 <li class="tweet">\                     <span class="content">'+status+'\                     <a style="font-size:85%" class="time" href="http://twitter.com/'+username+'/statuses/'+twitters[i].id_str+'">('+relative_time(twitters[i].created_at)+')</a></span>\                 <div class="clearfix"></div></li>' );           }           document.getElementById('twitter_update_list_<?php echo $unique_id; ?>').innerHTML = statusHTML.join('');            var template = '\             <span class="author">\                 <img src="<%= user.profile_image_url %>">&nbsp;\                 <a class="username" href="http://twitter.com/<%= user.screen_name %>">\                     <strong><%= user.screen_name %></strong>\                 </a>\             </span>';           jQuery( _.template( template, { user: twitters[0].user } )).insertAfter('.bizsteam_twitter ul');         }          function relative_time(time_value) {           var values = time_value.split( " " );           time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];           var parsed_date = Date.parse(time_value);           var relative_to = (arguments.length > 1) ? arguments[1] : new Date();           var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);           delta = delta + (relative_to.getTimezoneOffset() * 60);            if (delta < 60) {             return 'less than a minute ago';           } else if(delta < 120) {             return 'about a minute ago';           } else if(delta < (60*60)) {             return (parseInt(delta / 60)).toString() + ' minutes ago';           } else if(delta < (120*60)) {             return 'about an hour ago';           } else if(delta < (24*60*60)) {             return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';           } else if(delta < (48*60*60)) {             return '1 day ago';           } else {             return (parseInt(delta / 86400)).toString() + ' days ago';           }         }     //-->!]]>      </script>     <?php         if($exclude_replies != ''){ $exclude_replies_str = '&amp;exclude_replies='.$exclude_replies; } else { $exclude_replies_str = ''; }     ?>     <script type="text/javascript" src="http://api.twitter.com/1/statuses/user_timeline/<?php echo $twitter_username; ?>.json?callback=twitterCallback2&amp;count=<?php echo $twitter_count; ?>&amp;include_rts=t<?php echo $exclude_replies_str; ?>"></script> 

Firebug states that the line of code with the error is:

jQuery( _.template( template, { user: twitters[0].user } )).insertAfter('.bizsteam_twitter ul'); 

Any help would be greatly appreciated

like image 934
Jason Avatar asked Nov 25 '12 22:11

Jason


People also ask

How do I fix ReferenceError is not defined?

Answer: Execute Code after jQuery Library has Loaded The most common reason behind the error "Uncaught ReferenceError: $ is not defined" is executing the jQuery code before the jQuery library file has loaded. Therefore make sure that you're executing the jQuery code only after jQuery library file has finished loading.

What does ReferenceError mean?

The ReferenceError object represents an error when a variable that doesn't exist (or hasn't yet been initialized) in the current scope is referenced. ReferenceError is a serializable object, so it can be cloned with structuredClone() or copied between Workers using postMessage() .

Is not defined $( document?

Basically $ is an alias of jQuery() so when you try to call/access it before declaring the function, it will endup throwing this $ is not defined error . This usually indicates that jQuery is not loaded and JavaScript does not recognize the $. Even with $(document).

What is not defined in JavaScript?

not defined: In JavaScript, it is one of the reference errors that JavaScript will throw when someone accesses the variable which is not inside the memory heap.


1 Answers

Your widget has Underscore.js/LoDash.js as dependency.

You can get them here: underscore, lodash

Try prepending this to your code, so you can see if it works:

<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/0.10.0/lodash.min.js"></script> 
like image 53
Stephan Bönnemann-Walenta Avatar answered Sep 21 '22 13:09

Stephan Bönnemann-Walenta