簡體   English   中英

Jest - ReferenceError: __DEV__ 未定義 (React Native)

[英]Jest - ReferenceError: __DEV__ is not defined (React Native)

我正試圖開玩笑地使用一個新的react-native項目。 但是,當我運行npm run test ,出現以下錯誤ReferenceError: __DEV__ is not defined 我已經瀏覽了無數關於此的 Github 問題和 Stack Overflow 帖子,但沒有一個建議對我的情況有效。

這是我的jest.config.js文件:

module.exports = {
    transformIgnorePatterns: [
       "node_modules/(?!(react-native|react-native-button|react-native-video)/)"
    ],  
    setupFiles: ['<rootDir>/__tests__/setup.json'],  
}

package.json (注意我在“jest”中添加了DEV = true)

{
  "name": "DigitalSignagePlayer",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "start": "react-native start",
    "test": "jest",
    "lint": "eslint ."
  },
  "dependencies": {
    "@react-native-async-storage/async-storage": "^1.15.5",
    "axios": "^0.21.1",
    "react": "^17.0.1",
    "react-native": "0.64.2",
    "react-native-fs": "^2.18.0",
    "react-native-splash-screen": "^3.2.0",
    "react-native-video": "^5.1.1"
  },
  "devDependencies": {
    "@babel/core": "^7.14.5",
    "@babel/preset-env": "^7.14.7",
    "@babel/runtime": "^7.14.5",
    "@react-native-community/eslint-config": "^2.0.0",
    "babel-jest": "^27.0.2",
    "eslint": "^7.28.0",
    "jest": "^27.0.5",
    "metro-react-native-babel-preset": "^0.66.0",
    "react-test-renderer": "17.0.1"
  },
  "jest": {
    "preset": "react-native",
  }

}

bable.config.js

module.exports = {
  presets: ['module:metro-react-native-babel-preset', '@babel/preset-env'],
  
};

metro.config.js

/**
 * Metro configuration for React Native
 * https://github.com/facebook/react-native
 *
 * @format
 */

module.exports = {
  transformer: {
    getTransformOptions: async () => ({
      transform: {
        experimentalImportSupport: false,
        inlineRequires: true,
      },
    }),
  },
};

我試過在我的測試文件的頂部設置globals.DEV = trueglobal.DEV = true 我曾嘗試將setupFiles添加到jest.config.js ,它加載了一個包含global.DEV = truesetup.js文件。 我也試過更新jest 我當前的react-native版本是:

react-native-cli: 2.0.1
react-native: 0.64.2

我也在使用 Metro,而不是 Expo,我最初使用 react-native-cli 創建了該應用程序。

更新:

setup.json

{
    "globals": { "__DEV__": true } 
}

更新 2:

我將setup.json更改為setup.js但我仍然遇到相同的錯誤:

 global.__DEV__ = true

該變量稱為__DEV__ ,因此通過反復試驗使用DEV沒有意義。 在測試中設置它無濟於事,因為它不會影響導入時變量的使用。 為了做到這一點,這應該在setupFiles*文件中的測試之前完成。

Jes globals配置選項應該這樣做。 應該有"globals": { "__DEV__": true } package.json 中的配置被 jest.config.js 中的配置覆蓋。 應該只有其中一個(可能是后者),另一個需要刪除。

暫無
暫無

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

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