Изгнанный Create-React-App не смог перенести код node_modules из пакетов Atlaskit - PullRequest
1 голос
/ 19 апреля 2019

Пакеты Atlaskit в node_modules приводят к сбою Jest в запущенном приложении create-реагировать.Пока у меня есть только файл App.test.js по умолчанию, и я получаю SyntaxError: Unexpected token export от @atlaskit/dropdown-menu.

Изображение ошибки

Я просмотрел разныевопросы о проблемах StackOverflow и Github, и хотя стандартный ответ, который все продолжают предлагать попробовать, заключается в том, чтобы сосредоточиться на transformIgnorePatterns в конфигурации Jest, ничто из того, что я пробовал, похоже, не помогает, поэтому это может быть отдельной проблемой.

В package.json моя текущая конфигурация Jest выглядит следующим образом.Это стандартная конфигурация, которая появляется после извлечения:

package.json

"jest": {
    "collectCoverageFrom": [
      "src/**/*.{js,jsx,ts,tsx}",
      "!src/**/*.d.ts"
    ],
    "resolver": "jest-pnp-resolver",
    "setupFiles": [
      "react-app-polyfill/jsdom"
    ],
    "testMatch": [
      "<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}",
      "<rootDir>/src/**/?(*.)(spec|test).{js,jsx,ts,tsx}"
    ],
    "testEnvironment": "jsdom",
    "testURL": "http://localhost",
    "transform": {
      "^.+\\.(js|jsx|ts|tsx)$": "<rootDir>/node_modules/babel-jest",
      "^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
      "^(?!.*\\.(js|jsx|ts|tsx|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
    },
    "transformIgnorePatterns": [
      "[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$",
      "^.+\\.module\\.(css|sass|scss)$"
    ],
    "moduleNameMapper": {
      "^react-native$": "react-native-web",
      "^.+\\.module\\.(css|sass|scss)$": "identity-obj-proxy"
    },
    "moduleFileExtensions": [
      "web.js",
      "js",
      "web.ts",
      "ts",
      "web.tsx",
      "tsx",
      "json",
      "web.jsx",
      "jsx",
      "node"
    ]
  }

Я также удалил babel конфигурации и eslint из package.json и в их отдельные файлы.

.babelrc.js

const plugins = [
  [
    "module-resolver",
    {
      root: [
        "."
      ],
      alias: {
        atoms: "./src/components/atoms",
        molecules: "./src/components/molecules",
        organisms: "./src/components/organisms",
        pages: "./src/components/pages"
      }
    }
  ]
]

module.exports = {
  env: {
    development: {
      presets: ["react-app"],
      plugins,
    },
    local: {
      presets: ["react-app"],
      plugins,
    },
    qa: {
      presets: ["react-app"],
      plugins,
    },
    stage: {
      presets: ["react-app"],
      plugins,
    },
    production: {
      presets: ["react-app"],
      plugins,
    },
    test: {
      presets: [
        ["react-app",
          { 'preset-env': {
            'modules': 'commonjs'
          }}
        ]
      ],
      plugins,
    }
  }
}

.eslintrc.json

{
    "extends": ["standard", "standard-react"],
    "env": {
        "browser": true,
        "es6": true,
        "jest": true
    },
    "plugins": [
        "standard",
        "react"
    ],
    "globals": {
        "Atomics": "readonly",
        "SharedArrayBuffer": "readonly"
    },
    "parserOptions": {
        "ecmaFeatures": {
            "jsx": true,
            "javascript": true,
            "modules": true
        },
        "ecmaVersion": 2018,
        "sourceType": "module"
    },
    "rules": {

    }
}

Я ожидаю, что при вызове npm run test все все node_modules, а не только @atlaskit, будут соответствующим образом преобразованы в код, который не вызывает сбоев Jest.

...