开玩笑在 Expo 上运行时无法识别 .jsx 文件

Posted

技术标签:

【中文标题】开玩笑在 Expo 上运行时无法识别 .jsx 文件【英文标题】:Jest not recognizing .jsx files when running on Expo 【发布时间】:2021-12-24 10:18:29 【问题描述】:

在我的 Expo 程序中,我无法在 .jsx 文件上运行它的测试套件。

我的 babel.config.js:

module.exports = function (api) 
  api.cache(true);
  return 
    presets: ['babel-preset-expo'],
  ;
;

我的 package.json:


  "main": "node_modules/expo/AppEntry.js",
  "scripts": 
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "web": "expo start --web",
    "eject": "expo eject",
    "test": "jest --watchAll --no-cache"
  ,
  "jest": 
    "preset": "jest-expo",
    "transformIgnorePatterns": [
      "node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base|react-native-svg)"
    ],
    "collectCoverage": true,
    "collectCoverageFrom": [
      "**/*.js,jsx",
      "!**/coverage/**",
      "!**/node_modules/**",
      "!**/babel.config.js",
      "!**/jest.setup.js"
    ]
  ,
  "dependencies": 
    "@babel/preset-env": "^7.16.0",
    "@mantine/hooks": "^3.1.7",
    "axios": "^0.24.0",
    "expo": "~43.0.0",
    "expo-status-bar": "~1.1.0",
    "react": "17.0.1",
    "react-dom": "17.0.1",
    "react-native": "0.64.2",
    "react-native-material-textfield": "^0.16.1",
    "react-native-web": "0.17.1",
    "styled-components": "^5.3.3"
  ,
  "devDependencies": 
    "@babel/core": "^7.16.0",
    "@testing-library/react": "^12.1.2",
    "babel-jest": "^27.3.1",
    "babel-preset-react-native": "^4.0.1",
    "jest": "^27.3.1",
    "jest-expo": "^43.0.1",
    "prettier": "2.4.1",
    "react-test-renderer": "^17.0.2"
  ,
  "private": true


我也尝试将@babel/preset-react 添加到presets,但错误消息更改为以下内容:

    [BABEL]: Cannot find module '@babel/core'

我没有 webpack.config.js 或 jest.config.js。

如果有人对如何解决此问题有任何想法,我将不胜感激。

谢谢!

编辑:我已将“@babel/preset-react”添加到我的 babel.config.js 文件中,现在我从开玩笑中得到一个错误,说“将 @babel/preset-react”添加到“您的 Babel 配置的预设部分以启用转换。我更新的 babel.config.js:

module.exports = function (api) 
  api.cache(true);
  return 
    presets: ['babel-preset-expo', '@babel/preset-react'],
    plugins: ['@babel/plugin-syntax-jsx']
  ;
;

【问题讨论】:

【参考方案1】:

所以我重新安装了所有依赖项,它似乎正在工作....不确定问题是什么,但似乎我删除或破坏了一个依赖项文件。

【讨论】:

以上是关于开玩笑在 Expo 上运行时无法识别 .jsx 文件的主要内容,如果未能解决你的问题,请参考以下文章

开玩笑的带有 expo sqlite 调用的单元测试类

Android设备上的Expo App某些onPress()未触发

expo for ios - '启动设备时无法确定运行时捆绑包

Webpack 无法在我的 js 文件中识别我的 JSX 语法

测试运行器(开玩笑)未能导入 expo 模块

Expo没有运行