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

问题描述 投票:0回答:3

我有一个 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
3个回答
0
投票

这对我有用:https://github.com/timarney/react-app-rewired/issues/241#issuecomment-387584632

config-overrides.js

module.exports = {
  jest: (config) => {
    config.transformIgnorePatterns = ["/node_modules/(?!(@my-company))/"]
    return config;
  }
}

-1
投票

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

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

-1
投票

当我使用 Create-react-app Typescript Jest Axios 创建测试时遇到此错误。也许 package.json 中的以下条目可能会有所帮助。

"jest": {
      "transform": {
      "^.+\\.[t|j]sx?$": "babel-jest"
      },
      { "transformIgnorePatterns": [
      "node_modules/(?!@shotgunjed)/"
      ]
 },
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.