জেএসহিন্ট এবং জিক্যুরি: '$' সংজ্ঞায়িত হয়নি


215

নিম্নলিখিত জেএস:

(function() {
  "use strict";

  $("#target").click(function(){
    console.log("clicked");
  });

}());

উৎপাদনের:

test.js: line 5, col 3, '$' is not defined.

JSHint 0.5.5 ব্যবহার করে আবদ্ধ যখন। কোন ধারনা?


আপনি কি jquery.jsআপনার পৃষ্ঠায় যুক্ত করেছেন?
ররি ম্যাকক্রসন

4
ওয়েল, যদি আপনি এটি নিজে ঠিক যে code feed, $ হয় অনির্দিষ্ট।
পয়েন্টি

কৌণিক আমার এই সমস্যা আছে। কেবলমাত্র কৌণিক.এলিমেন্টে change পরিবর্তন করুন এবং কোনও সতর্কীকরণের ঝাঁকুনি নেই
রাফেল ভিটার

উত্তর:


381

আপনি যদি জেএসহিন্টের তুলনামূলকভাবে সাম্প্রতিক সংস্করণটি ব্যবহার করছেন তবে সাধারণত পছন্দসই পদ্ধতিটি হল আপনার প্রকল্পের মূলটিতে একটি .jshintrc ফাইল তৈরি করা এবং এতে এই কনফিগারেশনটি রাখা:

{
    "globals": {
        "$": false
    }
}

এটি জেএসহিন্টকে ঘোষণা করে যে $ একটি বৈশ্বিক পরিবর্তনশীল, এবং মিথ্যা ইঙ্গিত দেয় যে এটি ওভাররাইড করা উচিত নয়।

.Jshintrc ফাইলটি জেএসহিন্টের সত্যিকারের পুরানো সংস্করণগুলিতে সমর্থিত ছিল না (যেমন ২০১২ সালের মূল প্রশ্নের মতো v0.5.5)। আপনি .jshintrc ফাইলটি ব্যবহার করতে বা না করতে চাইলে আপনি স্ক্রিপ্ট ফাইলটির শীর্ষে এটি যুক্ত করতে পারেন:

/*globals $:false */

শর্টহ্যান্ড "jquery" jshint বিকল্পটি JSHint বিকল্প পৃষ্ঠাতে যেমন দেখা যাচ্ছে ..


47
Jquery এই বিকল্পটি কেবল দুটি পঠনযোগ্য বৈশ্বিক চলকগুলি সংজ্ঞায়িত করে: $ এবং jQuery Qu এটির সংক্ষিপ্ত সংস্করণ /*global $:false, jQuery:false */
আন্তন কোভালিভ

1
ভিজ্যুয়াল স্টুডিওর জন্য আমার জেএসহিন্টের সাহায্যে বিকল্পটিকে "অনুমান
জিকুয়েরি

2
বিকল্প পতাকাটি যাবার উপায় first প্রথম টাইমারগুলির জন্য: আপনার .jshintrc ফাইলে 'jquery: true' রেখাটি যুক্ত করুন।
Genkilabs

3
": মিথ্যা" এর কারণ কী ?, আমি খুঁজে পেয়েছি / * গ্লোবাল $ * / ঠিক কাজ করে। (আমার ক্ষেত্রে / * গ্লোবাল jQuery ছিল / যদিও)
মিশিগেল

একে একে টাইপ না করে স্ক্রিপ্টের মধ্যে সমস্ত ফাংশনের জন্য জেনারালি সেট করার কোনও উপায় আছে /* global ... */কি? আমি সাধারণত আমার সমস্ত ফাংশন সহ একটি স্ক্রিপ্ট আমদানি করি mainতাই এটি একে একে সংজ্ঞায়িত করা জটিল ...
tsando

148

আপনি আপনার .jshintrc এ দুটি লাইন যুক্ত করতে পারেন

  "globals": {
    "$": false,
    "jQuery": false
  }

এটি জিশিন্টকে বলে যে এখানে দুটি বৈশ্বিক চলক রয়েছে।


3
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। একটি সিনট্যাক্স চেকারকে খুশি করতে আপনার প্রকল্পে কোডের বিভিন্ন লাইন সহ প্রতিটি একক জাভাস্ক্রিপ্ট ফাইল দূষিত করা কোনও বিকল্প নয়। ধন্যবাদ wmil
Cosmin

51

আপনাকে যা করতে হবে তা আপনার মধ্যে সেট করা "jquery": trueআছে .jshintrc

প্রতি JSHint অপশন রেফারেন্স :

jQuery

এই বিকল্পটি jQuery জাভাস্ক্রিপ্ট লাইব্রেরি দ্বারা প্রকাশিত গ্লোবালগুলি সংজ্ঞায়িত করে।


6
এটি সম্ভবত শীর্ষস্থানীয় উত্তর হওয়া উচিত ... লজ্জাজনকভাবে এটি এখানে সমাহিত করা হয়েছে
জ্যাচ লিসোবে

সাব্লাইম টেক্সট 3 .jshintrc ফাইলটি কোথায় পাবেন? আমি এই বিকল্পটি সাব্লাইমলিন্টার.সুব্লাইম-সেটিং ফাইলগুলিতে (পছন্দসমূহ-> প্যাকেজ সেটিংস-> সাব্লাইমলিন্টার-> সেটিংস-ডিফল্ট) রাখার চেষ্টা করেছি এবং আমার প্রকল্পের রুট ডিরেক্টরিতে নতুন .jshintrc ফাইল (my.jshintrc) করার চেষ্টাও করেছি, অনুযায়ী jshint.com/docs । এর কোনটিই আমাকে সহায়তা করেছিল।
মিলোস

@ মিলস সাবলিমেটেক্সটে জেএসহিন্ট গটার ইনস্টল করুন Tools. সরঞ্জামগুলিতে যান> জেএসহিন্ট> আনুষঙ্গিক পছন্দগুলি সেট করুন, এটি .jshintrc খুলবে।
নীরেন

1
আর কিছুই নয়, এটি "$" চিহ্নটি এখনও চিনতে পারে না। আমি যখন .jshintrc খুলি তখন এটি চলতে থাকে: \ অ্যাপডেটা \ রোমিং \ সাব্লাইম টেক্সট 3 ages প্যাকেজগুলি \ জেএসহিন্ট গটার, আমি "জ্যাকোয়ারি" রাখি: সত্য এবং কিছুই ঘটে না।
মিলোস

গ্লোবাল বিভাগে ভেরিয়েবল যুক্ত করার চেয়ে আরও ভাল উত্তর! এইভাবে সমাধান করুন!
ম্যাথিয়াস ক্লেইন

16

আপনার .jshintrc এ রাখার জন্য এখানে একটি খুশির ছোট্ট তালিকা রয়েছে
আমি সময় বরাতে এই তালিকায় যুক্ত করব।

{
  // other settings...
  // ENVIRONMENTS
  // "browser": true, // Is in most configs by default
  "node": true,
  // others (e.g. yui, mootools, rhino, worker, etc.)
  "globals": {
    "$":false,
    "jquery":false,
    "angular":false
    // other explicit global names to exclude
  },
}

1
আপনি যদি "ব্রাউজার" এবং "নোড" বিকল্পগুলিকে "সত্য" হিসাবে সেট করেন তবে এই তালিকার কেবলমাত্র অবশিষ্ট আইটেমগুলি প্রয়োজনীয় $, জ্যাকোয়ারি এবং কৌণিক। আরও তথ্যের জন্য ডক্সের পরিবেশ বিভাগটি দেখুন: jshint.com/docs/options/#
ব্যবহারকারী 45656584

আপনার আপডেটটি অন্তর্ভুক্ত করার জন্য আমি উত্তরটি সম্পাদনা করেছি @ @45456584 আপনাকে ধন্যবাদ
জেমস হ্যারিংটন

8

যদি আপনি কোনও ইন্টেলিজ এডিটর যেমন ওয়েবস্টর্ম, পাইচার্ম, রুবিমাইন বা ইন্টেলিজ আইডিএ ব্যবহার করছেন:

ফাইল / সেটিংস / জাভাস্ক্রিপ্ট / কোড গুণমান সরঞ্জাম / জেএসহিন্টের এনভায়রনমেন্টস বিভাগে, jQuery চেকবক্সে ক্লিক করুন।


1
পাশাপাশি মনোযোগ দিন যে আপনি "কনফিগার ফাইল ব্যবহার করুন" পরীক্ষা করে সমস্ত অভ্যন্তরীণ কনফিগারেশন ওভাররাইড করতে পারেন। এটি ডাব্লুএসকে কনফিগার ফাইলের পরিবর্তনগুলি দেখতে দেবে। এটি ছাড়া তিনি এটিকে কেবল উপেক্ষা করেন।
নিওসউফ

3

স্বাভাবিক "JSHint গ্লোবালগুলি বন্ধ করুন" সুপারিশ করার পরিবর্তে, আমি এই সমস্যাটি সমাধান করতে মডিউল প্যাটার্নটি ব্যবহার করার পরামর্শ দিচ্ছি recommend এটি আপনার কোডটিকে "অন্তর্নিহিত" রাখে এবং একটি পারফরম্যান্স উত্সাহ দেয় (পল আইরিশের "জেকারি সম্পর্কে আমি শিখেছি 10 টি জিনিস" এর উপর ভিত্তি করে )।

আমি এইভাবে আমার মডিউল নিদর্শন লিখতে ঝোঁক:

(function (window) {
    // Handle dependencies
    var angular = window.angular,
        $ = window.$,
        document = window.document;

    // Your application's code
}(window))

আপনি এই অন্যান্য কর্মক্ষমতা সুবিধা পেতে পারেন ( এখানে আরও ব্যাখ্যা করা হয়েছে ):

  • কোডটি মাইনাইফ করার সময়, windowঅবজেক্ট ডিক্লোরেশনে পাস করাটি পাশাপাশি ন্যূনতম হয় । যেমন window.alert()হয়ে m.alert()
  • স্ব-সম্পাদনকারী বেনামি ফাংশনের অভ্যন্তরে কোড কেবলমাত্র windowঅবজেক্টের 1 টি উদাহরণ ব্যবহার করে ।
  • কোনও windowসম্পত্তি বা পদ্ধতিতে কল করার সময় আপনি তাড়া করে ফেলেন , স্কোপ চেইনের ব্যয়বহুল ট্র্যাভারসাল প্রতিরোধ করে window.alert()(দ্রুত) বনামalert() (ধীর) পারফরম্যান্স।
  • "নেমস্পেসিং" এবং নিয়ন্ত্রণের মাধ্যমে ফাংশনগুলির স্থানীয় সুযোগ (গ্লোবালগুলি খারাপ। আপনার যদি এই কোডটি পৃথক স্ক্রিপ্টগুলিতে বিভক্ত করতে হয়, আপনি সেই সমস্ত স্ক্রিপ্টগুলির জন্য একটি উপ-মডেল তৈরি করতে পারেন এবং সেগুলি একটি প্রধান মডিউলে আমদানি করতে পারেন।

2
এটি আমিও ব্যবহার করি এমন একটি প্যাটার্ন, তবে এটি আমার জন্য মূল সমস্যাটি সমাধান করে না। জেএসহিন্ট এখনও অভিযোগ করেছেন যে শেষ পংক্তিতে একটি চলক সংজ্ঞায়িত করা হয়নি ( "}(window))"আপনার উদাহরণে - আমার কাছে jQuery এবং হাইচার্টস নিয়েও সমস্যা ছিল) I ফাইলটির জন্য গ্লোবাল সংজ্ঞায়িত করা ছাড়া আমি এটিকে বন্ধ করার উপায় খুঁজে পাইনি, যা তখন উদ্দেশ্যকে পরাস্ত করে
মাইরোসিয়া

@ মাইরোসিয়া জেএসহিন্টকে browser: trueবলেছে যে আপনি ব্রাউজার পরিবেশের প্রত্যাশা করছেন (যেখানে windowইতিমধ্যে সংজ্ঞায়িত রয়েছে)।
স্যাম

আমি এই পদ্ধতির পছন্দ!
জেঠরো

2

যদি আপনি কোনও ইন্টেলিজি সম্পাদক ব্যবহার করে থাকেন তবে

  • পছন্দসমূহ / সেটিংস
    • জাভাস্ক্রিপ্ট
      • কোড মানের সরঞ্জাম
        • JSHint
          • পূর্বনির্ধারিত (নীচে), সেট ক্লিক করুন

উদাহরণস্বরূপ console:false, আপনি যে কোনও কিছুতে টাইপ করতে পারেন এবং এটি তালিকায় (.jshintrc) পাশাপাশি যুক্ত হবে - একটি বিশ্বব্যাপী।



আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.