SyntaxError: Неожиданный экспорт токенов при тестировании машинописного кода с импортом модуля ES2015 с помощью jest - PullRequest
0 голосов
/ 08 ноября 2018

Я изо всех сил пытаюсь получить код, с которым я работаю, проверенный.

Во всех своих проектах я использую шутки для тестирования. он работает нормально, пока у меня есть файлы JavaScript, но я работаю с некоторыми пакетами, содержащими машинописный код. Код содержит зависимости с импортом и экспортом модуля ES2015, а при сборке его в комплекте с веб-пакетом, где целевой код по-прежнему содержит экспорт и импорт модуля ES2015

Jest запускается на узле и не может обрабатывать модули ES2015 (пока), и я не могу понять, как настроить babee-текст или jest для переноса кода зависимости в модули commonjs, когда я хочу запустить свои тесты

Я потратил безумное количество времени, пытаясь понять это, поэтому я ценю всю помощь, которую я могу получить.

в этом примере я клонировал пример проекта jest для Typescript и изменил его, чтобы он содержал зависимость, содержащую модули ES2015, чтобы проиллюстрировать проблему

tsconfig.json

{
  "compilerOptions": {
    "allowJs": true,
    "module": "commonjs"
  }
}

package.json

{
    "devDependencies": {
        "@types/jest": "^23.1.1",
        "@types/node": "^10.12.3",
        "jest": "*",
        "typescript": "*",
        "ts-jest": "*"
      },

        "dependencies": {
            "lodash-es": "^4.17.11" //has es2015 exports
          },
          "jest": {
            "moduleFileExtensions": [
             "ts",
              "tsx",
              "js"
            ],
            "transform": {
              "^.+\\.(ts|tsx)$": "ts-jest"
            },
            "globals": {
              "ts-jest": {
                "tsConfigFile": "tsconfig.json"
              }
            },
            "testMatch": [
              "**/__tests__/*.+(ts|tsx|js)">
            ]
          }
}

wrap.ts

import {map} from "lodash-es";
export function wrap(a: number, b: number): number {
  return map([a,b],i=>({i}));
}

wrap.test.ts

import {wrap} from "../sum"
it('wrap ', ()=> {
  expect(wrap(1, 2)).toBe([{i:1},{i:1}]);
});

при запуске шутка я получаю

 export { default as add } from './add.js';
 ^^^^^^

SyntaxError: Unexpected token export

из файла в зависимости

есть идеи, как это решить?

...