Почему ESLint выдает ошибку при использовании потока? - PullRequest
0 голосов
/ 06 апреля 2019

Я инициализировал новый реактивный проект с версией RN 0.59.Я настроил eslint (с набором правил airbnb), babel и flow:

package.json:

"devDependencies": {
"@babel/core": "^7.4.0",
"@babel/runtime": "^7.4.2",
"@react-native-community/eslint-config": "^0.0.3",
"babel-eslint": "^10.0.1",
"babel-jest": "^24.5.0",
"babel-preset-flow": "^6.23.0",
"eslint": "^5.15.3",
"eslint-config-airbnb": "^17.1.0",
"eslint-plugin-import": "^2.16.0",
"eslint-plugin-jsx-a11y": "^6.2.1",
"eslint-plugin-react": "^7.12.4",
"flow-bin": "^0.96.0",
"jest": "^24.5.0",
"metro-react-native-babel-preset": "^0.53.1",
"react-test-renderer": "^16.8.5"
},

babel.config.js

module.exports = {
  presets: ["module:metro-react-native-babel-preset", "flow"]
};

eslintrc.json

{
    "env": {
        "es6": true,
        "node": true,
        "jest": true
    },
    "extends": "airbnb",
    "globals": {
        "Atomics": "readonly",
        "SharedArrayBuffer": "readonly"
    },
    "parserOptions": {
        "ecmaFeatures": {
            "jsx": true
        },
        "ecmaVersion": 2018,
        "sourceType": "module"
    },
    "plugins": [
        "react"
    ],
    "rules": {
        "react/jsx-filename-extension": [1, { "extensions": [".js"] }]
    }
}

Проблема: Если я запустил eslint, я получил следующие ошибки:

  8:17  error  Parse errors in imported module '../app/App': Unexpected token Props (19:6)  import/no-named-as-default
  8:17  error  Parse errors in imported module '../app/App': Unexpected token Props (19:6)  import/no-named-as-default-member

enter image description here

Как правильно настроить eslint для распознавания, что это объявление типа потока?

1 Ответ

1 голос
/ 06 апреля 2019

Я понял это.Сначала я установил eslint-plugin-flowtype После этого я отредактировал .eslintrc.json следующим образом:

  • add parser: "babel-eslint",
  • add to extends "plugin: flowtype/ рекомендуется "`
  • добавить в plugins: "flowtype"

После этого все работает.

Файл выглядит следующим образом:

{
    "parser": "babel-eslint",
    "env": {
        "es6": true,
        "node": true,
        "jest": true
    },
    "extends": "plugin:flowtype/recommended",
    "globals": {
        "Atomics": "readonly",
        "SharedArrayBuffer": "readonly"
    },
    "parserOptions": {
        "ecmaFeatures": {
            "jsx": true
        },
        "ecmaVersion": 2018,
        "sourceType": "module"
    },
    "plugins": [
        "react",
        "flowtype"
    ],
    "rules": {
        "react/jsx-filename-extension": [1, { "extensions": [".js"] }]
    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...