React / Jest / Typescript: экспорт по умолчанию не определен - PullRequest
0 голосов
/ 08 апреля 2019

SRC / услуги / backend.ts:

export const login = ({ metadataKey }) =>
  axiosInstance
    .get(`${API.DEFAULT_BROKER}${API.V1_LOGIN_PATH}/${metadataKey}`)
    .then(({ data }: any) => data);

export default {
  ...
  login
};

У меня есть файл, который импортирует backend.ts и использует функцию login. Когда я импортирую его, используя import { login } from "../../services/backend";, он работает:

import { login } from "../../services/backend";

...
login({
  metadataKey
})

Проходной тест:

 PASS  src/redux/epics/authentication-epic.test.ts
  ✓ authenticationEpic loginEpic (9ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        1.607s, estimated 2s
Ran all test suites matching /src\/redux\/epics\/authentication-epic.test.ts/i.

Однако, когда я импортирую его, используя экспорт по умолчанию, он всегда не определен:

import backend from "../../services/backend";

...
backend.login({
  metadataKey
})

Неудачный тест:

 FAIL  src/redux/epics/authentication-epic.test.ts
  ✕ authenticationEpic loginEpic (37ms)

  ● authenticationEpic loginEpic

    TypeError: Cannot read property 'login' of undefined

      22 |
      23 |       return from(
    > 24 |         backend.login({
         |                 ^
      25 |           metadataKey
      26 |         })
      27 |       ).pipe(

Я заметил ту же проблему даже со сторонними библиотеками. Например, я использую node-forge, но он ломался, если я не изменил

import forge from "node-forge";

до:

import { md } from "node-forge";

Я что-то пропустил? Это шутливый раздел моего package.json:

  "jest": {
    "collectCoverageFrom": [
      "src/**/*.{js,jsx,mjs}"
    ],
    "setupFiles": [
      "<rootDir>/config/polyfills.js"
    ],
    "testMatch": [
      "<rootDir>/src/**/*.{js,jsx,mjs,ts}",
      "<rootDir>/src/**/?(*.)(spec|test).{js,jsx,mjs,ts}"
    ],
    "globals": {
      "window": true
    },
    "testEnvironment": "jsdom",
    "testURL": "http://localhost",
    "transform": {
      "^.+\\.jsx?$": "<rootDir>/node_modules/babel-jest",
      "^.+\\.tsx?$": "ts-jest",
      "^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
      "^(?!.*\\.(js|jsx|mjs|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
    },
    "transformIgnorePatterns": [
      "[/\\\\]node_modules[/\\\\].+\\.(js|jsx|mjs)$"
    ],
    "moduleNameMapper": {
      "^react-native$": "react-native-web"
    },
    "moduleFileExtensions": [
      "web.js",
      "js",
      "json",
      "web.jsx",
      "jsx",
      "node",
      "mjs",
      "ts",
      "tsx"
    ]
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...