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

4
我有一个React Native应用程序,在其中有一些文件包含调用特定端点的某些方法。当我尝试运行Jest时,它会在导入的本地文件中抛出错误。 enter image description here 我有以下的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中。

我在这个问题上找到了很多解决方案,但没有一个适用于这种情况,我不知道该怎么办了。谢谢你的时间!


只是一个想法,多年来我发现,如果您的文件中没有按预期关闭所有括号和方括号并运行测试,则会引发相同的错误。因此,也要注意这一点。 - poPaTheGuru
3个回答

0

0
当我使用Create-react-app Typescript Jest Axios创建测试时,我遇到了这个错误。也许package.json中的以下条目可以帮到你。
"jest": {
      "transform": {
      "^.+\\.[t|j]sx?$": "babel-jest"
      },
      { "transformIgnorePatterns": [
      "node_modules/(?!@shotgunjed)/"
      ]
 },

-1

我在网上找到了这个答案,对我有用,只需稍作修改,我会把它贴在这里,或许会帮助到未来的某个人:

  1. 安装babel-jestbabel-preset-env@babel/runtimereact(最后一个可能只有在其他包需要时才需要)
  2. 根目录中创建.babelrc文件并添加以下内容:
  {
     "env": {
      "test": {
        "plugins": ["transform-es2015-modules-commonjs"]
      }
    }
  }
运行你的代码,应该就可以了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接