Babel + Jest配置

时间:2018-12-28 19:21:34

标签: javascript reactjs jestjs babeljs

问题:

 var today = new Date(); 
 var am_or_pm = today.toLocaleString([], { hour:'numeric', hour12: true });

 var TK_send_date = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
 var TK_send_hour = today.getHours();
 var TK_send_minute = today.getMinutes(); 
 var TK_ampm = am_or_pm.slice(-2);

这是我的设置:

Jest encountered an unexpected token This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript. By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules". Here's what you can do: • To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config. • If you need a custom transformation specify a "transform" option in your config. • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option. You'll find more details and examples of these config options in the docs: https://jestjs.io/docs/en/configuration.html Details: path\setupTests.js:1 ({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){import { configure } from 'enzyme'; ^ SyntaxError: Unexpected token { at ScriptTransformer._transformAndBuildScript (../node_modules/jest-runtime/build/script_transformer.js:403:17)

package.json

"devDependencies": { "babel-core": "^6.26.3", "babel-eslint": "^8.2.3", "babel-jest": "^23.6.0", "babel-loader": "7.1.4", "babel-plugin-transform-class-properties": "^6.24.1", "babel-plugin-transform-object-rest-spread": "^6.26.0", "babel-preset-env": "^1.7.0", "babel-preset-react": "6", "babel-runtime": "6", "css-loader": "0.28.11", "enzyme": "^3.3.0", "enzyme-adapter-react-16": "^1.1.1", "enzyme-to-json": "^3.3.5", "jest": "^23.2.0", "jest-enzyme": "^6.0.2", }

.babelrc

{ "presets": [ [ "env", { "targets": { "node": "current" } } ], "react"], "plugins": [ [ "react-css-modules", { "filetypes": { ".scss": { "syntax": "postcss-scss" } }, "webpackHotModuleReloading": true } ], ["transform-class-properties", { "spec": true }], ["transform-object-rest-spread"], ["emotion"] ], "env": { "test": { "presets": [ "jest", "react", [ "env", { "debug": false, "modules": "commonjs", "targets": { "node": "current" }, "useBuiltIns": true } ] ], "plugins": [ "transform-es2015-modules-commonjs", [ "react-css-modules", { "generateScopedName": "[local]", "filetypes": { ".scss": { "syntax": "postcss-scss", "plugins": [ "postcss-nested" ] } } } ] ] } } }

jest.config.js

我已阅读:

https://jestjs.io/docs/en/getting-started.html#using-babel https://github.com/facebook/jest/issues/5164#issuecomment-366139663 Configuring Babel and Jest Jest es6 modules: unexpected module import How to use babel-preset-env with Jest https://github.com/facebook/jest/issues/1654

我正在使用module.exports = { rootDir: 'client', moduleNameMapper: { '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '<rootDir>/__mocks__/fileMock.js', '\\.(scss)$': 'identity-obj-proxy', '<rootDir>/config.js': '<rootDir>/__mocks__/config.js' }, setupFiles: ['<rootDir>/setupTests.js'], setupTestFrameworkScriptFile: '../node_modules/jest-enzyme/lib/index.js', transform: {} }; 。我已经删除并重新安装了我的依赖项。

我仍然迷失了方向。

2 个答案:

答案 0 :(得分:1)

您仍在使用Babel 6-我建议您阅读Babel 7升级文档https://babeljs.io/docs/en/v7-migration

发生了很大的变化,特别是在预设方面,现在已经简化了。

这里有一个工具可以帮助您入门:https://github.com/babel/babel-upgrade-它会查看您的package.json并自动升级您的大多数babel包含和预设。

值得阅读并遵循升级指南。您可能会在整个过程中找到问题的原因,并确信设置正确。

答案 1 :(得分:-1)

我正在共享我的工作babelrc和package.json文件。您可以在其顶部进行调试,以查找设置混乱的地方。

babel.rc

 {
  "presets": [
    [
      "@babel/preset-env",
      {
        "debug": false,
        "targets": {
          "browsers": ["last 3 versions"]
        }
      }
    ]
  ]
}

Package.JSON

{
  "name": "babelWithJest",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "jest"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "npm": "^6.4.1"
  },
  "devDependencies": {
    "@babel/core": "^7.0.0-beta.54",
    "@babel/preset-env": "^7.0.0-beta.54",
    "babel-core": "^7.0.0-bridge.0",
    "babel-jest": "^23.4.0",
    "bili": "^3.1.2",
    "jest": "^23.4.1",
    "regenerator-runtime": "^0.12.0"
  }
}