Я разрабатываю мобильное приложение в React Native и некоторое время пытаюсь правильно настроить ESLint (включая Babel, Flow и Prettier).
Я получаю следующую ошибку в VSCode: 'module' should be listed in the project's dependencies. eslint(import/no-extraneous-dependencies).
Это касается всех моих модулей и плагинов, таких как react, react-native и другие. Я установил все пакеты и расширение VSCode ESLint, но ESLint по-прежнему выдает эту ошибку. Возможно, я также продублировал некоторые функции в разделе extends, мне интересно, хороша ли моя конфигурация и смогу ли я избавиться от этой ошибки (все остальное работает, как и ожидалось).
.eslintrc.json
{
"extends": [
"airbnb",
"plugin:react/recommended",
"plugin:flowtype/recommended",
"plugin:prettier/recommended",
"prettier",
"prettier/babel",
"prettier/react",
"prettier/flowtype",
"prettier/standard"
],
"plugins": [
"react",
"react-native",
"flowtype",
"standard",
"prettier"
],
"parser": "babel-eslint",
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true,
"modules": true
}
},
"env": {
"browser": true,
"jest": true
},
"rules": {
"import/no-unresolved": "off",
"react/jsx-filename-extension": [
1,
{
"extensions": [
".js",
".jsx"
]
}
],
"prettier/prettier": [
"error",
{
"trailingComma": "es5",
"singleQuote": true,
"printWidth": 100
}
]
}
}
пакет.json
{
"name": "PICSTART",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"ios": "react-native run-ios --simulator=\"iPhone XR\"",
"android": "react-native run-android",
"debugjs": "react-devtools",
"test": "jest",
"flow": "node_modules/flow-bin/vendor/flow"
},
"dependencies": {
"@okgrow/react-native-copilot": "^2.4.1",
"moment": "^2.24.0",
"react": "16.5.0",
"react-native": "0.57.1",
"react-native-camera": "^1.3.0",
"react-native-datepicker": "^1.7.2",
"react-native-fs": "^2.13.3",
"react-native-image-picker": "^0.28.0",
"react-native-loading-spinner-overlay": "^1.0.1",
"react-native-modal": "^9.0.0",
"react-native-svg": "^9.3.3",
"react-native-vector-icons": "^6.1.0",
"react-navigation": "^2.0.4",
"react-redux": "^5.0.7",
"redux": "^4.0.0",
"redux-mock-store": "^1.5.1",
"redux-thunk": "^2.3.0"
},
"devDependencies": {
"@babel/core": "^7.1.2",
"@babel/runtime": "^7.1.2",
"babel-eslint": "^10.0.1",
"babel-jest": "23.6.0",
"eslint": "^5.15.3",
"eslint-config-airbnb": "^17.1.0",
"eslint-config-prettier": "^4.1.0",
"eslint-plugin-flowtype": "^3.4.2",
"eslint-plugin-import": "^2.16.0",
"eslint-plugin-jsx-a11y": "^6.2.1",
"eslint-plugin-prettier": "^3.0.1",
"eslint-plugin-react": "^7.12.4",
"eslint-plugin-react-native": "^3.6.0",
"eslint-plugin-standard": "^4.0.0",
"flow-bin": "^0.78.0",
"jest": "23.6.0",
"metro-react-native-babel-preset": "0.47.0",
"prettier": "^1.16.4",
"react-test-renderer": "16.5.0"
},
"jest": {
"preset": "react-native",
"testRegex": "./__tests__/[^setup].*.js$",
"transformIgnorePatterns": [
"node_modules/(?!react-native|native-base|react-navigation|react-native-fabric)"
],
"setupFiles": [
"./__tests__/setup.js"
]
}
}





Эта ошибка eslint(import/no-extraneous-dependencies) возникает из-за того, что вы импортируете модуль, которого нет в вашем package.json.
Если все в порядке, ошибок при компиляции нет, можно посмотреть документы здесь и там объяснят, как отключить это правило.
Если .eslintrc.json и package.json не находятся в одной папке, это может вызвать ошибку, потому что eslint ищет файл package.json, но может найти его, потому что он находится в другой папке.
Редактировать: Возможно, вы пропали "es6": true в "env"
Пытаться
"env": {
"es6": true,
"browser": true,
"jest": true
},
Я проверил, что мои файлы .eslintrc.json и package.json находятся в корневой папке. Я также видел это правило, но я не хочу отключать проверку установленных пакетов, это решение больше похоже на обходной путь. Должна уметь работать...
Пожалуйста, предоставьте больше информации о вашем проекте, я не знаю, как решить эту проблему только с этой информацией.
импортировать * как React из 'реагировать'; импортировать {изображение} из 'React-Native'; Такой импорт вызывает ошибку. Чем еще я мог бы поделиться?
в этой части "ecmaFeatures": { "jsx": true, "modules": true } попробуйте удалить "modules": true и сообщите если что-то изменится
Нет, ничего не меняет
Что вы проверили? Что вы имеете в виду, когда говорите, что это слишком много для вас?