ESLint পার্সিং ত্রুটি: অপ্রত্যাশিত টোকেন


169

এই কোড সহ:

import React from 'react';
import { Link } from 'react-router';
import { View, NavBar } from 'amazeui-touch';

import * as Pages from '../components';

const {  Home, ...Components } = Pages;

আমি এই এসিলিন্ট ত্রুটি পেয়েছি:

7:16  error  Parsing error: Unexpected token .. Why?

এখানে আমার এসলিন্ট কনফিগারেশন:

{
  "extends": "airbnb",
  "rules": {
    /* JSX */
    "react/prop-types": [1, {
      "ignore": ["className", "children", "location", "params", "location*"]
    }],
    "no-param-reassign": [0, {
      "props": false
    }],
    "prefer-rest-params": 1,
    "arrow-body-style": 0,
    "prefer-template": 0,
    "react/prefer-stateless-function": 1,
    "react/jsx-no-bind": [0, {
      "ignoreRefs": false,
      "allowArrowFunctions": false,
      "allowBind": true
    }],
  }
}

.... .... সমস্যা কি?


আপনি কি আপনার এসলিন্ট কনফিগার পোস্ট করতে পারেন?
আজিয়াম

ধন্যবাদ আমি ইতিমধ্যে :5
ডংওয়াইও

3
আপনাকে এমন একটি পার্সার ব্যবহার করতে হবে যা অবজেক্ট স্প্রেড সম্পত্তি প্রস্তাবকে সমর্থন করে।
ফেলিক্স ক্লিং

অপ্রত্যাশিত টোকেন "আমদানি" নষ্ট? এটা আমার সমস্যা ছিল ।
লনি সেরা

উত্তর:


253

ESLint পার্সিংয়ে অপ্রত্যাশিত টোকেন ত্রুটিগুলি আপনার বিকাশ পরিবেশ এবং জাভাস্ক্রিপ্ট ES6 ~ 7 এর সাথে চলমান পরিবর্তনের সাথে ESLint এর বর্তমান পার্সিং ক্ষমতাগুলির মধ্যে অসামঞ্জস্যতার কারণে ঘটে।

আপনার .eslintrc এ "parserOptions" বৈশিষ্ট্য যুক্ত করা নির্দিষ্ট পরিস্থিতিগুলির পক্ষে আর যথেষ্ট নয়, যেমন ব্যবহার

static contextTypes = { ... } /* react */

ES6 ক্লাসে যেমন ESLint বর্তমানে এটি নিজস্বভাবে পার্স করতে অক্ষম। এই নির্দিষ্ট পরিস্থিতি এর ত্রুটি ফেলবে:

error Parsing error: Unexpected token =

সমাধানটি হল একটি ESLint কে একটি সামঞ্জস্যপূর্ণ পার্সার দ্বারা পার্স করা। বাবেল-এস্লিন্ট হ'ল এমন একটি প্যাকেজ যা এই পৃষ্ঠাটি পড়ার পরে সম্প্রতি আমাকে সংরক্ষণ করেছিল এবং আমি পরবর্তী যেকোন ব্যক্তির বিকল্প সমাধান হিসাবে এটি যুক্ত করার সিদ্ধান্ত নিয়েছি।

শুধু যোগ কর:

"parser": "babel-eslint"

আপনার .eslintrcফাইল এবং চালানো npm install babel-eslint --save-devবা yarn add -D babel-eslint

দয়া করে মনে রাখবেন যে নতুন কনটেক্সট এপিআই থেকে শুরু করে React ^16.3কিছু গুরুত্বপূর্ণ পরিবর্তন হয়েছে, দয়া করে অফিসিয়াল গাইডটি দেখুন


4
yarn add -D babel-eslintসুতা ব্যবহারকারীদের জন্য।
নিউরোট্রান্সমিটার

8
যারা "parser": "babel-eslint"কনফিগার স্টেটমেন্ট যুক্ত করবেন জানেন না তাদের ক্ষেত্রে এটি রয়েছে .eslintrc.json। আমার ক্ষেত্রে এটি একটি JSON ফাইল, তবে মূলত, আপনার .eslintrc ফাইল
প্রোগ্রামার

2
দ্রষ্টব্য * আপনি যদি নিজের তৈরি-প্রতিক্রিয়া-অ্যাপ্লিকেশনটি "বের করে" দিয়ে থাকেন এবং আপনি আপনার আইডিইতে এসলিন্ট-ইনগ যুক্ত করে থাকেন, বাবেল-এসলিন্ট ইতিমধ্যে প্রয়োগ করা হয়েছে। কেবল পার্সার এবং আপনার ভাল যোগ করুন।
ওয়েস ডাফ

1
আমি এই নিবন্ধটি সহায়কও
গুরুন 8

আমি "parser": "babel-eslint"আমার eslintrc ফাইলে এটিকে যুক্ত করেছি তবে পরিবর্তে একাধিক ত্রুটি পেয়েছি। আমি প্রতিক্রিয়া নিয়ে কাজ করছি এবং এটি আমাকে বলে যে আমার আমদানিকৃত উপাদানগুলি কল করা হয়েছিল কিন্তু কখনও ব্যবহৃত হয়নি। যা বিভক্ত
ডেভিড এ্যাসিয়েন

61

ESLint 2.x পরীক্ষামূলকভাবে ObjectRestSpread সিনট্যাক্স সমর্থন করে, আপনি আপনার নিম্নলিখিত যোগ করে এটি সক্রিয় করতে পারেন .eslintrc: ডক্স

"parserOptions": {
  "ecmaVersion": 6,
  "ecmaFeatures": {
    "experimentalObjectRestSpread": true
  }
},

ESLint 1.x স্থানীয়ভাবে স্প্রেড অপারেটরকে সমর্থন করে না, এটিকে ঘুরে দেখার এক উপায় হ'ল বাবেল-এসলিন্ট পার্সার ব্যবহার করা । সর্বশেষতম ইনস্টলেশন এবং ব্যবহারের নির্দেশাবলী প্রকল্পটির রেডমে রয়েছে।


2
এটা সত্যি না. ইএসলিন্টের ডিফল্ট পার্সার এসপ্রি স্প্রেড এবং এমনকি অবজেক্ট রেস্ট রেস্টকে সমর্থন করে (এটি একমাত্র পরীক্ষামূলক বৈশিষ্ট্য যা এস্প্রি সমর্থন করে)। আরও তথ্যের জন্য এটি দেখুন: eslint.org/docs/user-guide/…
ইলিয়া

1
ecmaFeaturesঅবচয় করা হয়েছে। ব্যবহার করুনecmaVersion
রিচার্ড অয়েট

7
ecmaVersion: 2018ESLint 5
টমসজ রাকিয়া

1
আমি যদি বলতে পারি তবে সেরা সমাধান।
Ansjovis86

1
আমি এই সমাধানটিতে কোনও সমস্যা দেখছি না - এটি আমার পক্ষে ভাল কাজ করেছে। এটি একটি নতুন প্যাকেজ ইনস্টল করার চেয়ে ভাল!
স্টিম গেমার

49

"parser": "babel-eslint" সমস্যাটি সমাধান করতে আমাকে সহায়তা করেছে

{
    "parser": "babel-eslint",
    "parserOptions": {
        "ecmaVersion": 6,
        "sourceType": "module",
        "ecmaFeatures": {
            "jsx": true,
            "modules": true,
            "experimentalObjectRestSpread": true
        }
    },
    "plugins": [
        "react"
    ],
    "extends": ["eslint:recommended", "plugin:react/recommended"],
    "rules": {
        "comma-dangle": 0,
        "react/jsx-uses-vars": 1,
        "react/display-name": 1,
        "no-unused-vars": "warn",
        "no-console": 1,
        "no-unexpected-multiline": "warn"
    },
    "settings": {
        "react": {
            "pragma": "React",
            "version": "15.6.1"
        }
    }
}

উল্লেখ


3
এই উত্তরটি @ জেএসকিউবিএক্সনের উত্তরে কিছু যুক্ত করে না।
cs01

7
আসলে এটি করে - আপনি একটি উদাহরণ কনফিগার পাবেন (পার্সারপশনগুলি অন্তর্ভুক্ত সহ)
kriskodzi

পুরো উদাহরণটি ++ পেয়ে দুর্দান্ত। এটি আমাকে একটি টেম্পারমোনকি জেএস ইঙ্গিতগুলির ত্রুটিটি ঠিক করতে সহায়তা করেছিল।
brasofilo

@ ব্রাজোফিলো আপনি কোথায় বাধা বাঁধে এসলিন্ট পরিবর্তন করবেন?
মেটিন ড্যাগসিলার

22

আমি প্রথম দ্বারা এই সমস্যাটি সমাধান করেছি, এনপিএম ব্যবহার করে ব্যাবেল-এসলিন্ট ইনস্টল করেছি

npm install babel-eslint --save-dev

দ্বিতীয়ত, .eslintrc ফাইলটিতে এই কনফিগারেশনটি যুক্ত করুন

{
   "parser":"babel-eslint"
}

ধন্যবাদ, এটি আমার প্রলম্বিত সমস্যাগুলি স্থির করে
ডিজার্স

21

আমার ক্ষেত্রে (আমি ফায়ারবেস ক্লাউড ফাংশন ব্যবহার করছি) আমি খুলেছি .eslintrc.jsonএবং পরিবর্তন করেছি:

"parserOptions": {
  // Required for certain syntax usages
  "ecmaVersion": 2017
},

প্রতি:

"parserOptions": {
  // Required for certain syntax usages
  "ecmaVersion": 2018
},

8

মূলত, সমাধানটি ছিল নিম্নলিখিত কনফিগারেশন হিসাবে অবজেক্ট ডেস্ট্রাকচারিং পরীক্ষামূলক বৈশিষ্ট্য হিসাবে ব্যবহৃত হত এবং এটি ডিফল্টরূপে সমর্থিত নয়:

{
  "parserOptions": {
    "ecmaFeatures": {
      "experimentalObjectRestSpread": true
    }
  }
}

সংস্করণ 5 থেকে, এই বিকল্পটি হ্রাস করা হয়েছে

এখন কেবল ES এর একটি সংস্করণ ঘোষণা করা যথেষ্ট, যা যথেষ্ট নতুন new

{
  "parserOptions": {
    "ecmaVersion": 2018
  }
}

1

আপনি যদি ভুট্টা দৌড়ানোর সাথে একটি প্রাক-কমিট টাস্ক পেয়ে থাকেন eslintতবে অনুগ্রহ করে পড়া চালিয়ে যান। আমার আসল সমস্যাটি আমি যে নোড সংস্করণটি ব্যবহার করছিলাম সে সম্পর্কে আমার উত্তর parserOptionsএবং parserমানগুলির বেশিরভাগ ক্ষেত্রে চেষ্টা করেছি।

আমার বর্তমান নোড সংস্করণটি ছিল ১২.০.০, তবে হস্কি আমার এনভিএম ডিফল্ট সংস্করণটি কোনওভাবে ব্যবহার করছিল (যদিও nvmআমার সিস্টেমে ছিল না)। এটি নিজেই ভুট্টার সমস্যা বলে মনে হচ্ছে । তাই:

  1. আমি মুছে $HOME/.nvmফোল্ডারের যা মোছা হয়নি যখন আমি মুছে nvmআগে।
  2. যাচাই করা নোড সর্বশেষ এবং সঠিক পার্সার বিকল্পগুলি করেছেন।
  3. এটা কাজ শুরু!

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