জেএসএক্সকে এসেলিন্ট-কনফিগারেশন-এয়ারবিএনবি সহ '.js' এক্সটেনশানযুক্ত ফাইলগুলিতে অনুমোদিত নয়


107

আমি Eslint-config-airbnb ইনস্টল করেছি যা প্রতিক্রিয়ার জন্য ESLINT কনফিগার করার পূর্বে ধারণা করা হয়েছিল:

আমাদের ডিফল্ট রফতানিতে ECMAScript 6+ এবং প্রতিক্রিয়া সহ আমাদের ESLint বিধিগুলি রয়েছে। এটির জন্য এসলিন্ট, এসলিন্ট-প্লাগ-ইন-আমদানি, এস্লিন্ট-প্লাগ-ইন-প্রতিক্রিয়া এবং এসলিন্ট-প্লাগ-ইন-জেএসএক্স-এ 11y দরকার।

আমার .eslintrcএর কনফিগারেশনটি বাড়ানো হচ্ছে:

{ "extends": "eslint-config-airbnb",
  "env": {
    "browser": true,
    "node": true,
    "mocha": true
  },
  "rules": {
    "new-cap": [2, { "capIsNewExceptions": ["List", "Map", "Set"] }],
    "react/no-multi-comp": 0,
    "import/default": 0,
    "import/no-duplicates": 0,
    "import/named": 0,
    "import/namespace": 0,
    "import/no-unresolved": 0,
    "import/no-named-as-default": 2,
    "comma-dangle": 0,  // not sure why airbnb turned this on. gross!
    "indent": [2, 2, {"SwitchCase": 1}],
    "no-console": 0,
    "no-alert": 0,
    "linebreak-style": 0
  },
  "plugins": [
    "react", "import"
  ],
  "settings": {
    "import/parser": "babel-eslint",
    "import/resolve": {
      "moduleDirectory": ["node_modules", "src"]
    }
  },
  "globals": {
    "__DEVELOPMENT__": true,
    "__CLIENT__": true,
    "__SERVER__": true,
    "__DISABLE_SSR__": true,
    "__DEVTOOLS__": true,
    "socket": true,
    "webpackIsomorphicTools": true
  }
}

দুর্ভাগ্যজনকভাবে আমি এর ভিতরে প্রতিক্রিয়া জেএসএক্স কোড দিয়ে একটি .js ফাইলটি আবদ্ধ করার সময় নিম্নলিখিত ত্রুটিটি পেয়েছি:

 error  JSX not allowed in files with extension '.js'              react/jsx-filename-extension

ইতিমধ্যে বলা হয়েছে, জেএসএক্স সমর্থন করার জন্য এসলিন্ট-কনফিগার-এয়ারবিএনবি কনফিগার করা হয়নি?

এই ত্রুটিটি অপসারণ করার জন্য কী করা উচিত?

উত্তর:


234

হয় .jsxউল্লিখিত হিসাবে আপনার ফাইল এক্সটেনশানগুলি পরিবর্তন করুন বা জেএসএক্স-ফাইল নাম-এক্সটেনশন নিয়ম অক্ষম করুন । আপনি .jsজেএসএক্সের এক্সটেনশানগুলির অনুমতি দেওয়ার জন্য আপনার কনফিগারেশনে নিম্নলিখিতগুলি যুক্ত করতে পারেন ।

"rules": {
  "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }],
}

4
আপনি যদি নিজের ফাইল নাম এক্সটেনশান পরিবর্তন করতে বা নিয়মটি অক্ষম করতে না চান তবে এই উত্তরটি দেখুন
এম ফালঙ্গা

এই গৃহীত উত্তরটি নিয়ম অক্ষম করে না। এটি কেবল .js ফাইলগুলিকে জেএসএক্স ধারণ করার অনুমতি দেয় এবং আপনি যা লিঙ্ক করেছেন তা খুব বড় স্কেল প্রকল্পগুলিতে অত্যধিক বিশৃঙ্খলা তৈরি করে বলে মনে হচ্ছে।
জনিথার

অ্যারেতে দ্বিতীয় "jsx" উপাদানটি অপ্রয়োজনীয়। "Js" উপাদানটি যথেষ্ট, যেহেতু নিয়মটি ইতিমধ্যে "জেএসএক্স" সুযোগটি উল্লেখ করে।
রেমন্ড ওয়াচাগা

কনফিগারেশন ফাইল কোথায়?
ইমান মারাশী

18

এটা আমার জন্য কাজ। আপনাকে সাহায্য আশা করি

  1. এতে jsx-filename- এক্সটেনশন অক্ষম করুন .eslintrc:

    "বিধিগুলি": {"প্রতিক্রিয়া / জেএসএক্স-ফাইল নাম-এক্সটেনশন": [0]}

  2. ইন webpack.config.js:

    সমাধান: {এক্সটেনশন: ['.js', '.jsx']},


4
webpack.config.jsউদাহরণ যোগ করার জন্য আপনাকে ভোট দিয়েছে ।
পিক্সেল 67

5

যদি এটি আপনার পক্ষে কাজ না করে তবে আমাকে ডামি বলুন

    "rules": {
        "react/jsx-filename-extension": [0],
        "import/extensions": "off"
    }

4

আপনি যদি নিজের ফাইলের এক্সটেনশান পরিবর্তন করতে না চান, আপনি এমন একটি ফাংশন রফতানি করতে পারেন যা জেএসএক্স ফেরত দেয় এবং তারপরে আপনার জেএস ফাইলটিতে সেই ফাংশনটি আমদানি করে কল করতে পারে।

// greeter.jsx

import React from 'react';

export default name => (
  <div>
    {`Hello, ${name}!`}
  </div>
);

এবং তারপর

// index.js

import ReactDOM from 'react-dom';
import greeter from './components/greeter';

const main = document.getElementsByTagName('main')[0];

ReactDOM.render(greeter('World'), main);

ডাউনভোট আমি বুঝতে পারছি না। কেউ কি আরও ব্যাখ্যা করতে পারে যাতে আমি আরও ভাল অবদানকারী হতে পারি?
এম ফালঙ্গা

7
সম্ভবত কারণ এটি যখন এই ফিক্সটি "কাজ করে", তবে এটি সর্বোপরি একটি কর্মক্ষেত্র। এবং আপনার প্রজেক্ট জুড়ে একাধিক জেএস ফাইলগুলিতে একটি কর্মসংস্থান অন্তর্ভুক্ত মনে হচ্ছে দারুণ হ্যাকি এবং পেশাদারহীন।
mkvlrn

আমি সম্মত হই যে এই কৌশলটি মূ .় প্রতিক্রিয়া নয়। তবে আমি কেবল আমার এন্ট্রিপয়েন্ট দিয়ে এই সমস্যাটি জুড়ে এসেছি। আমি সমস্ত ফাইল জুড়ে এটি করার পরামর্শ দেব না, কারণ এটি বিশ্রী কোড তৈরি করে। যদি এটি আপনার ব্যবহারের ক্ষেত্রে হয় তবে গ্রহণযোগ্য উত্তরের পরামর্শ অনুসারে কেবল রেখার নিয়মগুলি সংশোধন করুন।
এম ফালঙ্গা

2

মার্টিনের উত্তরটি ব্যাখ্যা করার জন্য , মনে হয় বর্তমানে JSXপ্রতিক্রিয়া নেটিভ ব্যবহার করা সম্ভব নয় । একটি জনসংযোগ তৈরি করা হয়েছিল কিন্তু বিভাজন সম্পর্কে উদ্বেগ এবং এর মতো জিনিসগুলির অজানা পরিণতি সম্পর্কে উদ্বেগের কারণে তা উল্টানো হয়েছিল index.ios.jsx। আমি নিশ্চিত নই যে এয়ারবিএনবি কীভাবে এটি ব্যবহার করে বা তারা যদি তা করে তবে আমি মূলত rulesমার্টিনের মতো একই ব্লকটি ব্যবহার করেছি ।


2

নিম্নলিখিত প্রতিক্রিয়া ডকুমেন্টেশন :

প্রতিটি জেএসএক্স উপাদানগুলি React.createElement (উপাদান, প্রপস, ... শিশু) কল করার জন্য কেবল সিনট্যাকটিক চিনি is

এয়ারবিএনবির স্টাইল গাইড অনুসরণ করুন :

আপনি জেএসএক্স নয় এমন কোনও ফাইল থেকে অ্যাপ্লিকেশন শুরু না করা পর্যন্ত React.createElement ব্যবহার করবেন না ।

আপনি এটি করতে পারেন:

    //index.js
    const app = React.createElement(App);
    ReactDOM.render(app, document.getElementById('root'));
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.