【问题标题】:Jest and Create-react-app: Cannot use import statement outside a moduleJest 和 Create-react-app:不能在模块外使用 import 语句
【发布时间】:2021-08-06 16:47:20
【问题描述】:

我有一个 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"
    ]
  }
}

jest.setup.js 文件如下:

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

jest.mock('@react-native-community/netinfo', () => mockRNCNetInfo)

暂时对这个内容进行注释,否则会抛出和图片一样的错误。

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

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

【问题讨论】:

    标签: javascript reactjs react-native jestjs babeljs


    【解决方案1】:

    我在互联网上找到了这个答案,它通过一些小插件对我有用,但我会在这里发布它,也许将来会对某人有所帮助:

    1. 安装babel-jestbabel-preset-env@babel/runtimereact(最后一个可能只有在其他软件包需要时才需要)
    2. root directory 中创建.babelrc 文件并添加:
      {
         "env": {
          "test": {
            "plugins": ["transform-es2015-modules-commonjs"]
          }
        }
      }
    
    1. 运行您的代码,一切顺利

    【讨论】:

      猜你喜欢
      • 2021-05-09
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 2021-04-22
      相关资源
      最近更新 更多