eslint 抱怨解析路径
eslint complaining about resolving paths
我一直收到 eslint 错误 import/no-unresolved
,但不确定如何修复它。我知道这和 babel 有关,但我不确定如何让 babel 和 eslint 一起玩。
我的 babel.config.js 文件:
module.exports = {
presets: [['@babel/preset-env', { targets: { node: 'current' } }], '@babel/preset-react'],
plugins: [
'babel-plugin-macros',
'@babel/plugin-syntax-dynamic-import',
'@babel/plugin-transform-destructuring',
[
'@babel/plugin-proposal-class-properties',
{
loose: true,
},
],
[
'@babel/plugin-proposal-object-rest-spread',
{
useBuiltIns: true,
},
],
[
'@babel/plugin-transform-runtime',
{
helpers: false,
regenerator: true,
},
],
[
'@babel/plugin-transform-regenerator',
{
async: false,
},
],
],
};
…和我的 .eslintrc.js 文件
module.exports = {
parser: 'babel-eslint',
extends: 'airbnb',
env: {
browser: true,
node: true,
jest: true,
es6: true,
},
plugins: ['react', 'jsx-a11y'],
parserOptions: {
ecmaVersion: 6,
sourceType: 'module',
ecmaFeatures: {
jsx: true,
},
},
rules: {
'object-curly-spacing': 2,
'arrow-parens': ['error', 'as-needed'],
'arrow-body-style': [2, 'as-needed'],
'comma-dangle': [2, 'always-multiline'],
'import/imports-first': 0,
'import/newline-after-import': 0,
'import/no-dynamic-require': 0,
'import/no-extraneous-dependencies': 0,
'import/no-named-as-default': 0,
'import/no-unresolved': 2,
'import/prefer-default-export': 0,
indent: [
2,
2,
{
SwitchCase: 1,
},
],
'space-before-function-paren': 0,
'jsx-a11y/aria-props': 2,
'jsx-a11y/heading-has-content': 0,
'jsx-a11y/label-has-associated-control': 2,
'jsx-a11y/mouse-events-have-key-events': 2,
'jsx-a11y/no-autofocus': 0,
'jsx-a11y/role-has-required-aria-props': 2,
'jsx-a11y/role-supports-aria-props': 2,
'max-len': 0,
'newline-per-chained-call': 0,
'no-confusing-arrow': 0,
'no-console': 1,
'no-use-before-define': 0,
'prefer-template': 2,
'class-methods-use-this': 0,
'react/forbid-prop-types': 0,
'react/jsx-first-prop-new-line': [2, 'multiline'],
'react/jsx-filename-extension': 0,
'react/prefer-stateless-function': 0,
'react/jsx-no-target-blank': 0,
'react/require-extension': 0,
'react/prop-types': 0,
'react/self-closing-comp': 0,
'require-yield': 0,
'import/no-webpack-loader-syntax': 0,
semi: ['error', 'always'],
},
settings: {
'import/resolver': {
webpack: {
config: 'config/webpack/development.js',
},
},
},
};
每种类型的导入都会出现此问题:
有什么建议吗?
编辑
我已经使用与我在这个项目中使用的相同的 eslint 设置创建了一个存储库。它显示的错误与我看到的相同。
您至少必须更新您的 eslint 配置以表明您需要 ES2018(或更新版本)支持,因为您正在使用模块导入验证现代 JS:
module.exports = {
...
parserOptions: {
ecmaVersion: 2018,
sourceType: 'module',
ecmaFeatures: {
jsx: true,
},
},
...
};
因为从 https://eslint.org/docs/user-guide/configuring#specifying-parser-options 我们知道 ecmaVersion: 6
对应于要求 ESLint 将您的代码验证为 ES2015,它早于 ES 模块,因此会正确地将任何 import ... from "..."
语句标记为错误。
我用大量 减少了 ESlint 配置的方式尝试了你的 github 回购协议:
module.exports = {
parser: 'babel-eslint',
extends: 'airbnb',
env: {
browser: true,
node: true,
jest: true,
es6: true
},
plugins: ['react'],
parserOptions: {
ecmaVersion: 2018,
sourceType: 'module',
ecmaFeatures: {
jsx: true,
},
},
rules: {
'no-unused-vars': 0
}
};
这很好用,所以:开始重新构建它,直到它崩溃,这样您才能更好地了解真正需要解决的问题。
我一直收到 eslint 错误 import/no-unresolved
,但不确定如何修复它。我知道这和 babel 有关,但我不确定如何让 babel 和 eslint 一起玩。
我的 babel.config.js 文件:
module.exports = {
presets: [['@babel/preset-env', { targets: { node: 'current' } }], '@babel/preset-react'],
plugins: [
'babel-plugin-macros',
'@babel/plugin-syntax-dynamic-import',
'@babel/plugin-transform-destructuring',
[
'@babel/plugin-proposal-class-properties',
{
loose: true,
},
],
[
'@babel/plugin-proposal-object-rest-spread',
{
useBuiltIns: true,
},
],
[
'@babel/plugin-transform-runtime',
{
helpers: false,
regenerator: true,
},
],
[
'@babel/plugin-transform-regenerator',
{
async: false,
},
],
],
};
…和我的 .eslintrc.js 文件
module.exports = {
parser: 'babel-eslint',
extends: 'airbnb',
env: {
browser: true,
node: true,
jest: true,
es6: true,
},
plugins: ['react', 'jsx-a11y'],
parserOptions: {
ecmaVersion: 6,
sourceType: 'module',
ecmaFeatures: {
jsx: true,
},
},
rules: {
'object-curly-spacing': 2,
'arrow-parens': ['error', 'as-needed'],
'arrow-body-style': [2, 'as-needed'],
'comma-dangle': [2, 'always-multiline'],
'import/imports-first': 0,
'import/newline-after-import': 0,
'import/no-dynamic-require': 0,
'import/no-extraneous-dependencies': 0,
'import/no-named-as-default': 0,
'import/no-unresolved': 2,
'import/prefer-default-export': 0,
indent: [
2,
2,
{
SwitchCase: 1,
},
],
'space-before-function-paren': 0,
'jsx-a11y/aria-props': 2,
'jsx-a11y/heading-has-content': 0,
'jsx-a11y/label-has-associated-control': 2,
'jsx-a11y/mouse-events-have-key-events': 2,
'jsx-a11y/no-autofocus': 0,
'jsx-a11y/role-has-required-aria-props': 2,
'jsx-a11y/role-supports-aria-props': 2,
'max-len': 0,
'newline-per-chained-call': 0,
'no-confusing-arrow': 0,
'no-console': 1,
'no-use-before-define': 0,
'prefer-template': 2,
'class-methods-use-this': 0,
'react/forbid-prop-types': 0,
'react/jsx-first-prop-new-line': [2, 'multiline'],
'react/jsx-filename-extension': 0,
'react/prefer-stateless-function': 0,
'react/jsx-no-target-blank': 0,
'react/require-extension': 0,
'react/prop-types': 0,
'react/self-closing-comp': 0,
'require-yield': 0,
'import/no-webpack-loader-syntax': 0,
semi: ['error', 'always'],
},
settings: {
'import/resolver': {
webpack: {
config: 'config/webpack/development.js',
},
},
},
};
每种类型的导入都会出现此问题:
有什么建议吗?
编辑
我已经使用与我在这个项目中使用的相同的 eslint 设置创建了一个存储库。它显示的错误与我看到的相同。
您至少必须更新您的 eslint 配置以表明您需要 ES2018(或更新版本)支持,因为您正在使用模块导入验证现代 JS:
module.exports = {
...
parserOptions: {
ecmaVersion: 2018,
sourceType: 'module',
ecmaFeatures: {
jsx: true,
},
},
...
};
因为从 https://eslint.org/docs/user-guide/configuring#specifying-parser-options 我们知道 ecmaVersion: 6
对应于要求 ESLint 将您的代码验证为 ES2015,它早于 ES 模块,因此会正确地将任何 import ... from "..."
语句标记为错误。
我用大量 减少了 ESlint 配置的方式尝试了你的 github 回购协议:
module.exports = {
parser: 'babel-eslint',
extends: 'airbnb',
env: {
browser: true,
node: true,
jest: true,
es6: true
},
plugins: ['react'],
parserOptions: {
ecmaVersion: 2018,
sourceType: 'module',
ecmaFeatures: {
jsx: true,
},
},
rules: {
'no-unused-vars': 0
}
};
这很好用,所以:开始重新构建它,直到它崩溃,这样您才能更好地了解真正需要解决的问题。