Что я делаю не так в моем файле ESLint, чтобы не было предупреждений об импорте?
Прочитав несколько вопросов и ответов по моей проблеме:
Ошибка синтаксического анализа: "импорт" и "экспорт" могут появляться только с "sourceType: module"
- игнорировать ошибку ESLint: "импорт" и "экспорт" могут появляться только на верхнем уровне
- Как правильно использовать импорт и требование в ES6?
- SyntaxError: "импорт" и "экспорт" могут появляться только с "sourceType: module". Подождите, что?
Я написал свой .eslintrc.json по адресу:
{
"extends": ["airbnb", "prettier", "plugin:node/recommended"],
"plugins": ["prettier"],
"env": {
"node": true,
"es6": true,
"browser": true
},
"parser": "babel-eslint",
"parserOptions": {
"ecmaVersion": 11,
"sourceType": "module",
"allowImportExportEverywhere": true
},
"rules": {
"prettier/prettier": "error",
"spaced-comment": "off",
"no-console": "warn",
"consistent-return": "off",
"func-names": "off",
"object-shorthand": "off",
"no-process-exit": "off",
"no-param-reassign": "off",
"no-return-await": "off",
"no-underscore-dangle": "off",
"class-methods-use-this": "off",
"prefer-destructuring": ["error", { "object": true, "array": false }],
"no-unused-vars": ["error", { "argsIgnorePattern": "req|res|next|val" }],
"semi": [2, "never"],
"object-curly-spacing": [2, "always"]
}
}
используя devDependencies:
"devDependencies": {
"babel-eslint": "^10.0.3",
"eslint": "^6.4.0",
"eslint-config-airbnb": "^18.0.1",
"eslint-config-prettier": "^6.3.0",
"eslint-plugin-import": "^2.18.2",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-node": "^10.0.0",
"eslint-plugin-prettier": "^3.1.1",
"eslint-plugin-react": "^7.14.3",
"eslint-plugin-react-hooks": "^1.7.0",
"nodemon": "^1.19.3",
"prettier": "^1.18.2"
},
а также настройку моего движка:
"engines": {
"node": "^10"
}
Когда я пишу тестовый модуль с помощью Babel:
export default class Search {
constructor() {
alert('search test')
}
}
Я получаю предупреждение:
Объявления импорта и экспорта пока не поддерживаются. Eslint(node /no-unsupported-features/es-syntax)
Почему мои настройки не работают? Я мог бы написать игнорированиеmodules/
в файле .eslintignore, но я хотел бы знать, почему я получаю это предупреждение и как я могу его правильно решить?
4 ответа
У меня была такая же проблема, удаление
"plugin:node/recommended"
сделал это для меня. Надеюсь это поможет!
Вероятно, есть лучший способ сделать это, но это сработало для меня.
{
"extends": ["airbnb", "prettier", "plugin:node/recommended"],
"plugins": ["prettier"],
"rules": {
"prettier/prettier": "error",
"spaced-comment": "off",
"no-console": "warn",
"consistent-return": "off",
"func-names": "off",
"object-shorthand": "off",
"no-process-exit": "off",
"no-param-reassign": "off",
"no-return-await": "off",
"no-underscore-dangle": "off",
"class-methods-use-this": "off",
"prefer-destructuring": ["error", { "object": true, "array": false }],
"no-unused-vars": ["error", { "argsIgnorePattern": "req|res|next|val" }],
"node/no-unsupported-features/es-syntax": [
"error",
{
"version": ">=13.0.0",
"ignores": ["modules"]
}
],
"import/extensions": [
"error",
{
"js": "ignorePackages"
}
]
},
"parserOptions": {
"sourceType": "module"
}
}
Ключевым здесь является правило «узел/нет неподдерживаемых функций/es-синтаксис». Все, что я здесь делаю, это переопределяю это правило, добавленное 'plugin:node/recommended', чтобы разрешить синтаксис модулей ES.
Как сказал @joan Gil, попробуйте использовать
"type":"module"
на вашей
package.json
(пока вы используете node> 12)
Проверьте свой файл .eslintrc. Это может быть из-за узла/рекомендуемого плагина.
"extends": ["plugin:node/recommended"]