簡體   English   中英

React Jest - TypeError: (0, _[....]) 不是 function

[英]React Jest - TypeError: (0 , _[....]) is not a function

我正在嘗試使用 Jest 為 React 應用程序創建單元測試,不幸的是,在將任何組件導入我的測試后出現錯誤。 該錯誤出現在我擁有的每個 function 上。 該應用程序是使用 Create React App 創建的,這個問題在我項目中的每個 function 上都會重復出現。

index.js

import 'react-app-polyfill/ie11';
import React from 'react';
import ReactDOM from 'react-dom';
import * as serviceWorker from './serviceWorker';
import Settings from './AppEnvironment';
import intl from 'react-intl-universal';
import { Provider } from 'mobx-react';
import { stores } from '~/stores';
import { HashRouter as Router } from 'react-router-dom';
import 'antd/dist/antd.css';
import './assets/stylesheets/styles.scss';
import App from './App';
import ReactBreakpoints from 'react-breakpoints';
import { breakpoints } from '~/utils/BreakPoints';
import AppProvider from './hooks';
import { initialize } from '@TruckPad/truckpad-analytics';
import { initializeGTM, initializeBlip } from '~/services/external';
import { resetLogin } from './utils/Utils';

initialize([Settings.gtag, Settings.utag]);

initializeGTM();
initializeBlip(
  'YXRoZW5hcm91dGVyOjIxN2U2ODdlLTk3MTUtNDE0NC04ZjJiLTNkNTZhNmQ1MGY1NQ==',
  Settings.environment === 'production',
);

const locales = {
  'pt-BR': require('./locales/pt-BR.json'),
  'en-US': require('./locales/en-US.json'),
};
const currentLocale = locales[navigator.language] ? navigator.language : 'pt-BR';

intl.init({
  currentLocale,
  locales,
});

console.log('Environment: ' + Settings.environment);
console.log('Version: ' + Settings.version);
resetLogin();
ReactDOM.render(
  <Provider {...stores}>
    <AppProvider>
      <ReactBreakpoints breakpoints={breakpoints}>
        <Router baseline="/">
          <App />
        </Router>
      </ReactBreakpoints>
    </AppProvider>
  </Provider>,
  document.getElementById('root'),
);

serviceWorker.unregister();

package.json 上的笑話配置

  "jest": {
    "moduleNameMapper": {
      "~/(.*)": "<rootDir>/src/",
      "\\.(css|less|scss|sass)$": "identity-obj-proxy"
    }
  }

運行紗線測試時出錯

 FAIL  src/pages/Shipments/List/ShipmentsList.spec.js
  ● Test suite failed to run

    TypeError: (0 , _Utils.generateUUID) is not a function

      283 | export const stoppingPointEmpty = {
      284 |   action: '',
    > 285 |   key: generateUUID(),
          |        ^
      286 |   address: {
      287 |     street_name: '',
      288 |     street_number: '',

      at Object.<anonymous> (src/components/Commons.js:285:8)
      at Object.<anonymous> (src/stores/VehicleStore.js:5:1)
      at Object.<anonymous> (src/utils/GenericClass.js:4:1)
      at Object.<anonymous> (src/App.js:14:1)
      at Object.<anonymous> (src/index.js:12:1)
      at Object.<anonymous> (src/pages/Shipments/List/ShipmentsList.js:3:1)
      at Object.<anonymous> (src/pages/Shipments/List/ShipmentsList.spec.js:2:1)

這個 function (generateUUID) 和其他所有帶有export const的 function 都給了我同樣的錯誤。

這里有人遇到過同樣的問題嗎? 我認為可能是一個 babel 配置或類似的東西。 謝謝您的幫助

我遇到了同樣奇怪的問題……在我的情況下,我有一個名為feature.js的文件,就在我想要導入的真實文件旁邊feature.ts 這個文件可能是我錯誤運行 tsc 時出現的(或者 webstorm 為我做的......)

據我了解,jest 試圖導入.js文件而不是.ts文件

刪除feature.js解決了這個問題。 PS:我正在運行 TS 4.5。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM