Jest,意外的令牌导入

时间:2017-04-17 20:04:05

标签: reactjs jestjs babel-jest

我启动了一个新的反应项目,我使用Jest作为测试平台。尽管有文档,博客和许多其他资源,例如stackoverflow,但我总是有一个"意外的令牌导入"错误可能与babel问题有关,但我的conf似乎没问题。欢迎任何帮助。

My Jest conf(在package.json中)。我的package.json有依赖,如babel-jest,babel-preset-es2015,babel-preset-react等。

 "jest": {
    "testMatch": [
      "**/?(*.)spec.js?(x)"
    ],
    "moduleDirectories": [
      "src",
      "node_modules"
    ],
    "moduleNameMapper": {
      "^lib/(.*)$": "<rootDir>/src/lib/$1",
      "^components/(.*)": "<rootDir>/src/components/$1",
    },
    "transform": {
      "^.+\\.jsx?$": "babel-jest"
    }

我的.babelrc conf:

{
  "presets": [
    ["es2015", { "modules": false }],
    "react"
  ],
  "plugins": [
    ["react-hot-loader/babel"],
    ["transform-object-rest-spread", { "useBuiltIns": true }],
    ["transform-runtime"]
  ],
  "env": {
      "test": {
        "presets": ["es2015", "react"]
      }
  } 
}

我的spec文件:

import React from 'react';
import Radio from 'components/ui/radio';
...

和components / ui / radio(第一行引发导入错误):

import Container from './container.jsx';
...

我的webpack有两个名为lib和components的别名(在jest中定义为moduleNameMapper)。

...
resolve: {
   mainFiles: ['index', 'main'],
   extensions: ['.js', '.jsx'],
   alias: {
     lib: helpers.getPath('src/lib/'),
     components: helpers.getPath('src/components/'),
   },
   modules: [
     helpers.getPath('src'),
     helpers.getPath('node_modules'),
   ],
}, 
...

2 个答案:

答案 0 :(得分:4)

我有一个非常类似的问题,最后我在运行jest时使用--no-cache解决了它。

我也有我的package.json依赖项,如babel-jest,babel-preset-es2015,babel-preset-react等。

jest --no-cache

答案 1 :(得分:0)

如果在更新到新的Jest版本后遇到此问题,请尝试清除Jest的内部缓存:

jest --clearCache