جافاسكريبت - خطأ ESLint: 'default' ممنوع من الاستخدام كاسم مصدّر


أتلقى هذا الخطأ في eslint في ملف index.js:

'default' محظور من الاستخدام كاسم مُصدَّر no-restricted-exports

صفحة/index.js

export { default } from './test';

صفحة/test.jsx

import React from 'react';

const Test = () => {
  return <div>Test</div>;
};
export default Test;

routes.js

import React from 'react';
import { Switch, Route } from 'react-router-dom';

const testPage = React.lazy(() => import('./page'));

function Routes() {
  return (
    <Switch>
      <Route path="/" exact component={testPage} />
    </Switch>
  );
}
export default Routes;

.eslintrc.json

{
  "env": {
    "browser": true,
    "es2021": true
  },
  "extends": ["plugin:react/recommended", "airbnb"],
  "parserOptions": {
    "ecmaFeatures": {
      "jsx": true
    },
    "ecmaVersion": "latest",
    "sourceType": "module"
  },
  "plugins": ["react"],
  "rules": {
    "import/extensions": [
      "error",
      "ignorePackages",
      {
        "js": "never",
        "jsx": "never"
      }
    ],
    "react/jsx-filename-extension": [
      1,
      {
        "extensions": [".js", ".jsx"]
      }
    ]
  },
  "settings": {
    "import/extensions": [".js", ".jsx"],
    "import/resolver": {
      "node": {
        "extensions": [".js", ".jsx"]
      }
    }
  }
}

ما هي الطريقة الصحيحة لحل ذلك، دون تعطيل ذلك؟

الإجابة رقم 1

export { default as Test } from './test';

إذا تم استخدام ما سبق، فعليك إجراء استيراد مسمى بدلاً من الاستيراد الافتراضي مثل هذا

import { Test } from './pathToTestFolder'

هذا ليس خطأً، ولكن للاستمرار في استخدام الاستيراد الافتراضي عليك تصدير test بشكل افتراضي. يمكنك القيام بذلك

page/index.js
import Test from './test'

export default Test

الآن يمكنك استخدام الاستيراد الافتراضي هكذا
routes.js

import Test from './pathToTestFolder'

أو وفقًا لملف المسار الخاص بك

const testPage = React.lazy(() => import('./page'));

الإجابة رقم 2

لا يمكنك تصدير default لأنه كلمة مفتاحية محجوزة. يمكنك استبدال السطر بـ :

export { default as Test } from './test';