Jest 和 Create-react-app:无法在模块外部使用 import 语句

poP*_*uru 5 javascript reactjs jestjs babeljs react-native

我有一个 React Native 应用程序,其中有一些文件,其中包含一些调用某些端点的方法。当我尝试运行时,Jest导入的本地文件抛出错误。 在此输入图像描述

我有下一个package.json

{
  "name": "appName",
  "version": "1.0.0",
  "description": "some description",
  "main": "index.js",
  "scripts": {
    "test": "jest"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {},
  "devDependencies": {
    "@babel/core": "^7.14.2",
    "@react-native-community/async-storage": "^1.12.1",
    "@react-native-community/netinfo": "^6.0.0",
    "isomorphic-fetch": "^3.0.0",
    "jest": "^26.6.3",
    "jest-fetch-mock": "^3.0.3"
  },
  "jest": {
    "automock": false,
    "setupFiles": [
      "./jest.setup.js"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

文件jest.setup.js如下:

import mockRNCNetInfo from '@react-native-community/netinfo/jest/netinfo-mock.js'

jest.mock('@react-native-community/netinfo', () => mockRNCNetInfo)
Run Code Online (Sandbox Code Playgroud)

目前,该内容已被注释,否则会抛出如图所示的相同错误。

我尝试在另一个项目中测试相同的内容,该@react-native-community/netinfo包未保存在devDependencies其中,但dependencies它有效,但我不确定这是否是问题所在。在这个特定的项目中,我不能让它package作为dependency,它应该在devDependencies.

我发现了很多问题,但没有一个能解决这个问题,我不知道该怎么办了。感谢您的时间!

poP*_*uru -1

我在互联网上找到了这个答案,它对我有用一些小附加组件,但我将其发布在这里也许会帮助将来的人:

  1. install babel-jestbabel-preset-env@babel/runtimereact(仅当其他软件包需要时才可能需要最后一个)
  2. 创建.babelrc文件root directory并添加:
  {
     "env": {
      "test": {
        "plugins": ["transform-es2015-modules-commonjs"]
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)
  1. 运行你的代码应该就可以了