Jest - 语法错误:意外的标识符

12

我正在使用Jest对一些NodeJS函数进行测试,但它不支持import语句,例如import DatabaseController from '../util/database-controller'

我已经阅读了一些资料,有人建议安装babel-jest并更新我的配置(如下所示),但我没有成功。我缺少了什么?据我所知,这是由于它不理解import语句,因为它是一个es6的东西...

我的package.json文件中包含Jest部分:

"jest": {
    "collectCoverageFrom": [
      "src/**/*.{js,jsx}"
    ],
    "resolver": "jest-pnp-resolver",
    "setupFiles": [
      "react-app-polyfill/jsdom"
    ],
    "testMatch": [
      "<rootDir>/**/__tests__/**/*.{js,jsx}",
      "<rootDir>/**/?(*.)(spec|test).{js,jsx}"
    ],
    "testEnvironment": "jsdom",
    "testURL": "http://localhost",
    "transform": {
      "^.+\\.jsx?$": "babel-jest",
      "^.+\\.css$": "<rootDir>/config/jest/cssTransform.js",
      "^(?!.*\\.(js|jsx|css|json)$)": "<rootDir>/config/jest/fileTransform.js"
    },
    "transformIgnorePatterns": [
      "[/\\\\]node_modules[/\\\\].+\\.(js|jsx)$",
      "^.+\\.module\\.(css|sass|scss)$"
    ],
    "moduleNameMapper": {
      "^react-native$": "react-native-web",
      "^.+\\.module\\.(css|sass|scss)$": "identity-obj-proxy"
    },
    "moduleFileExtensions": [
      "web.js",
      "js",
      "json",
      "web.jsx",
      "jsx",
      "node"
    ]
  },

你能否包含你正在使用的 Babel-jest 版本?从 23 升级到 24 破坏了我的许多转换正则表达式。在那个更新中,他们切换到了 micromatch 3。 - endqwerty
2个回答

14

最近我发现我根本不需要使用babel-jest,只需使用@babel/preset-env以及下面的.babelrc就可以了:

{
  "env": {
    "test": {
      "presets": [["@babel/preset-env"]]
    }
  }
}

我其实已经自己解决了这个问题,但是你的回答涉及到了我遇到的其中一个问题,所以我会将它标记为正确的 :) - mfisher91

4
这对于我的简单设置有效:
devDependencies (在package.json中):
  "devDependencies": {
      "babel-eslint": "^10.0.3",
      "babel-preset-env": "^1.7.0",
      "jest": "^24.9.0",
      "parcel-bundler": "^1.12.3"
    }

我简单地创建了一个 babel.config.js 文件,内容如下:

  // babel.config.js
  module.exports = {
    presets: [
      [
        '@babel/preset-env',
        {
          targets: {
            node: 'current',
          },
        },
      ],
    ],
  };
<注意> - 在运行之前,确保清除缓存!
清除缓存:
  ./node_modules/.bin/jest --clearCache

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