从node_modules组件导入Jest意外的令牌;巴贝尔没能跑?

时间:2017-05-18 17:53:04

标签: jestjs babel-jest

我正在试图弄清楚如何让Jest在我的环境中工作,而我遇到的问题是这个项目在node_modules的子目录中有一堆自定义组件。

我收到了这个错误:



    FAIL  src/mantle/tools/searchindexer/apps/DataMover/js/components/__test__/GenericJobsTable.test.jsx
      ● Test suite failed to run

        /Users/rob/repos/mesa/ui/node_modules/iggy-common/components/IggyTable.jsx:1
        ({"Object.":function(module,exports,require,__dirname,__filename,global,jest){import React, {PropTypes} from "react";
                                                                                                 ^^^^^^
        SyntaxError: Unexpected token import

          at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/ScriptTransformer.js:289:17)
          at Object. (src/mantle/tools/searchindexer/apps/DataMover/js/components/JobsTable/GenericJobsTable.jsx:7:18)
          at Object. (src/mantle/tools/searchindexer/apps/DataMover/js/components/__test__/GenericJobsTable.test.jsx:5:25)

    Test Suites: 1 failed, 1 total
    Tests:       0 total
    Snapshots:   0 total
    Time:        2.4s
    Ran all test suites matching "GenericJobsTable".

我在NodeJS 7.7.1上运行jest ^20.0.3babel-jest ^20.0.3

在我的package.json中,这是我的jest配置部分:



      "jest": {
        "verbose": true,
        "transform": {
          "^.+\\.jsx$": "babel-jest"
        },
        "moduleFileExtensions": [
          "js",
          "jsx"
        ],
        "moduleDirectories": [
          "node_modules"
        ]
      }

我的根.babelrc定义为:



    {
      "presets": ["es2015", "react"]
    }

如果我运行jest --debug,我会看到:



    {
      "config": {
        "automock": false,
        "browser": false,
        "cache": false,
        "cacheDirectory": "/var/folders/wz/hd_hp8zn6gq7p6816w1hwx640000gn/T/jest_dx",
        "clearMocks": false,
        "coveragePathIgnorePatterns": [
          "/node_modules/"
        ],
        "globals": {},
        "haste": {
          "providesModuleNodeModules": []
        },
        "moduleDirectories": [
          "node_modules"
        ],
        "moduleFileExtensions": [
          "js",
          "jsx"
        ],
        "moduleNameMapper": {},
        "modulePathIgnorePatterns": [],
        "name": "898fa528b40c10619090191345fdb241",
        "resetMocks": false,
        "resetModules": false,
        "rootDir": "/Users/rob/repos/mesa/ui",
        "roots": [
          "/Users/rob/repos/mesa/ui"
        ],
        "setupFiles": [
          "/Users/rob/repos/mesa/ui/node_modules/regenerator-runtime/runtime.js"
        ],
        "snapshotSerializers": [],
        "testEnvironment": "jest-environment-jsdom",
        "testMatch": [
          "**/__tests__/**/*.js?(x)",
          "**/?(*.)(spec|test).js?(x)"
        ],
        "testPathIgnorePatterns": [
          "/node_modules/"
        ],
        "testRegex": "",
        "testRunner": "/Users/rob/repos/mesa/ui/node_modules/jest-jasmine2/build/index.js",
        "testURL": "about:blank",
        "timers": "real",
        "transform": [
          [
            "^.+\\.jsx$",
            "/Users/rob/repos/mesa/ui/node_modules/babel-jest/build/index.js"
          ]
        ],
        "transformIgnorePatterns": [
          "/node_modules/"
        ]
      },
      "framework": "jasmine2",
      "globalConfig": {
        "bail": false,
        "coverageReporters": [
          "json",
          "text",
          "lcov",
          "clover"
        ],
        "expand": false,
        "mapCoverage": false,
        "noStackTrace": false,
        "notify": false,
        "projects": [
          "/Users/rob/repos/mesa/ui"
        ],
        "rootDir": "/Users/rob/repos/mesa/ui",
        "testPathPattern": "",
        "testResultsProcessor": null,
        "updateSnapshot": "new",
        "useStderr": false,
        "verbose": true,
        "watch": false,
       "watchman": true
      },
      "version": "20.0.3"
    }

知道我可能在这里错误配置了什么吗?

1 个答案:

答案 0 :(得分:21)

解决!!!!!问题结果是node_modules / iggy-common中的那些讨厌的文件之一是一个简单的问题。 JS文件需要转换:


  "jest": {
    "verbose": true,
    "transform": {
      "^.+\\.jsx$": "babel-jest",
      "^.+\\.js$": "babel-jest"
    },
    "moduleFileExtensions": [
      "js",
      "jsx"
    ],
    "moduleDirectories": [
      "node_modules"
    ],
    "transformIgnorePatterns": [
      "node_modules/(?!iggy-common)"
    ]      
  }