【问题标题】:Jest - SyntaxError: Unexpected identifier开玩笑 - SyntaxError:意外的标识符
【发布时间】:2019-08-02 03:31:27
【问题描述】:

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

我做了一些阅读,人们建议安装 babel-jest 并更新我的配置(如下),但我没有任何运气。我错过了什么?据我了解,它不理解 import 语句,因为它是 es6 的东西......

我的package.json的一部分:

"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 的更新打破了我的很多转换正则表达式。他们在那次更新中切换到了微匹配 3

标签: javascript node.js jestjs babel-jest


【解决方案1】:

最近发现根本不需要babel-jest,直接用@babel/preset-env就可以了,下面.babelrc

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

【讨论】:

  • 我实际上自己解决了这个问题,但你的回答是我遇到的问题之一,所以我会标记它是正确的:)
【解决方案2】:

这适用于我的简单设置:

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

【讨论】:

    猜你喜欢
    • 2020-02-11
    • 2018-12-18
    • 1970-01-01
    • 2017-07-04
    • 1970-01-01
    • 2019-01-30
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多