Как исправить ошибку «SyntaxError: Неожиданная строка» при выполнении тестов - PullRequest
1 голос
/ 27 апреля 2019

Я разработал модульные тесты для моего реактивного приложения, используя шутки и энзимы. Я использую шутку версии 25.7.1. Когда я запускаю тесты, это терпит неудачу с ошибкой ниже. Я не уверен, почему это не нравится ключевое слово импорта.

FAIL src / components / App.test.tsx ● Не удалось запустить набор тестов

D:\Dev\ps-visualizer\ClientApp\node_modules\@svgdotjs\svg.js\src\main.js:2
import './modules/optional/arrange.js'
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

SyntaxError: Unexpected string

  at ScriptTransformer._transformAndBuildScript (node_modules/@jest/transform/build/ScriptTransformer.js:471:17)
  at ScriptTransformer.transform (node_modules/@jest/transform/build/ScriptTransformer.js:513:25)
  at Object.<anonymous> (node_modules/@bentley/imodeljs-markup/lib/Markup.js:10:18)

Вот моя шутливая конфигурация в package.json,

{
    "browser": true,
    "verbose": true,
    "collectCoverageFrom": [
      "src/**/*.{js,jsx,ts,tsx}",
      "!src/**/*.d.ts"
    ],
    "setupFilesAfterEnv": [
      "<rootDir>/src/setupTests.ts"
    ],
    "snapshotSerializers": [
      "enzyme-to-json/serializer"
    ],
    "globals": {
      "ts-jest": {
        "tsConfig": "tsconfig.test.json"
      }
    },
    "roots": [
      "<rootDir>/src"
    ],
    "testMatch": [
      "<rootDir>/src/**/__tests__/**/*.{js,jsx,ts,tsx}",
      "<rootDir>/src/**/*.{spec,test}.{js,jsx,ts,tsx}"
    ],
    "transform": {
      "^.+\\.jsx?$": "babel-jest",
      "^.+\\.tsx?$": "ts-jest"
    },
    "transformIgnorePatterns": [
      "[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$",
      "^.+\\.module\\.(css|sass|scss)$"
    ],
    "moduleNameMapper": {
      "^react-native$": "react-native-web",
      "\\.(css|less|scss|json)$": "<rootDir>/__mocks__/styleMock.js",
      "^.+\\.module\\.(css|sass|scss)$": "identity-obj-proxy"
    },
    "moduleFileExtensions": [
      "web.js",
      "js",
      "web.ts",
      "ts",
      "web.tsx",
      "tsx",
      "json",
      "web.jsx",
      "jsx",
      "node"
    ]
  }

tsconfig определяется так,

{
  "compilerOptions": {
    "target": "es2017",
    "lib": [
      "esnext.asynciterable",
      "es2017",
      "dom",
      "dom.iterable",
      "scripthost"
    ],
    "module": "commonjs",
    "stripInternal": false,
    "declaration": true,
    "strict": true, 
    "noImplicitAny": true, 
    "strictNullChecks": true, 
    "noImplicitThis": true,
    "alwaysStrict": true, 
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noImplicitReturns": true, 
    "noFallthroughCasesInSwitch": false, 
    "experimentalDecorators": true,
    "skipLibCheck": true,
    "sourceMap": true,
    "declarationMap": true,
    "jsx": "react",
    "preserveConstEnums": true, 
    "forceConsistentCasingInFileNames": true
  }
}
...