«SyntaxError: Неожиданный экспорт токена» с использованием Jest with babel 7+ - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь покрыть базовый редуктор тестом, но он выдает ошибку для экспорта в моем файле констант:

 FAIL  jest/spec/reducers/RootReducer.spec.js
  ● Test suite failed to run

    Jest encountered an unexpected token

    Details:

    project-root\js\src\constants\ActionTypes.js:2
    export const LOCALE_REQUEST = 'ROOT/LOCALE_REQUEST';
    ^^^^^^

    SyntaxError: Unexpected token export

      1 | 'use strict';
      2 |
    > 3 | import { LOCALE_REQUEST_SUCCESS, ROUTING_REQUEST_SUCCESS } from '/js/src/constants/ActionTypes';
        | ^
      4 |

      at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:403:17)
      at Object.<anonymous> (jest/spec/reducers/RootReducer.spec.js:3:1)

Я запускаю тесты из папки 'project-root \ tests'

js-файлы, которые я хочу протестировать, находятся в папке 'project-root \ js'

Я считаю, что это является причиной ошибки. Поскольку файл, который я пытаюсь импортировать, находится вне папки tests , похоже, он не переносится

это мой package.json :

{
  "name": "jest",
  "version": "0.0.0",
  "scripts": {
    "test": "jest"
  },
  "devDependencies": {
    "@babel/core": "^7.2.2",
    "@babel/plugin-transform-modules-commonjs": "^7.2.0",
    "@babel/preset-env": "^7.2.3",
    "babel-core": "7.0.0-bridge.0",
    "jest": "^23.6.0"
  }
}

это .babelrc :

{
  "presets": [
    "@babel/preset-env"
  ],
  "plugins": [
    "@babel/plugin-transform-modules-commonjs"
  ]
}

это jest.config.js :

module.exports = {
    verbose: true,
    transform: {
        "^.+\\.jsx?$": "babel-jest"
    },
    bail: true,
    browser: true,
    cacheDirectory: '/tmp/jest',
    collectCoverage: false,
    roots: [
        '<rootDir>/../js',
        '<rootDir>/jest'
    ],
    moduleNameMapper: {
        '^(.*)/js/(.*)$': '<rootDir>/../js/$2'
    },
    testRegex: '(jest/spec/.*|(\\.|/)(test|spec))\\.js$',
    testPathIgnorePatterns: [
        '<rootDir>/node_modules'
    ],
    transformIgnorePatterns: [
        '/node_modules/'
    ]
};

Поэтому я попытался найти похожие случаи в Интернете, но в большинстве случаев проблемы возникают из-за / node_modules или чего-то, что отсутствует в конфигурации jest. Но я не могу найти, что не так в моем случае, буду очень признателен за любые подсказки, что я могу попробовать

up: кто-то предложил мне добавить babel-jest в мой package.json , но он уже находится в / node_modules - он добавляется с jest пакет

1 Ответ

0 голосов
/ 15 января 2019

Проблема заключается в том, что у вас нет установки babel-loader, поэтому проект будет взорван командами импорта и экспорта, которые не удаляются из исходного кода во время компиляции, поскольку babel не знает, как справиться с этим без babel- Загрузчик установлен и настроен.

Для быстрого примера того, как начать работу с переносом ES6 и загрузкой модуля, вы можете проверить этот пример.

youtube.com / смотреть? V = X5wTsHRsbIA

...