【问题标题】:Jest encountered an unexpected token exportJest 遇到了意外的令牌导出
【发布时间】:2021-01-04 01:07:10
【问题描述】:

Hej,我正在尝试用一些图书馆开玩笑。但是当我尝试测试库时,我不断收到SyntaxError: Unexpected token export 错误。似乎他没有编译 node_modules,但我在 transformIgnorePatterns 设置中排除了它。我真的不知道该怎么做,我很难设置它。我没有使用 React 或 Vue 或其他东西。

我的 package.json

{
  "dependencies": {
    "MY-MODULE": "latest"
  },
  "devDependencies": {
    "@babel/core": "^7.3.4",
    "@babel/plugin-transform-modules-commonjs": "^7.2.0",
    "@babel/preset-env": "^7.3.4",
    "babel-jest": "^24.3.1",
    "jest": "^24.3.1"
  },
  "babel": {
    "presets": [
      [ "@babel/preset-env" ]
    ],
    "plugins": [
      "@babel/plugin-transform-modules-commonjs"
    ]
  },
  "jest": {
    "moduleFileExtensions": [ "js", "json" ],
    "transform": {
      "^.+\\.jsx?$": "babel-jest"
    },
    "transformIgnorePatterns": [
      "/node_modules/(?!MY-MODULE)"
    ]
  }
}

我的测试用例是这样的:

import { Test } from '../../src/Test';


describe('Test', () => {

    it('should work', () => {
        const test = new Test();
        expected(test).toBeDefined();
    });

});

我的 Test.js 是这样的:

import MyModule from 'MY-MODULE';

export class Test extends MyModule { }

【问题讨论】:

  • 您是否按照github.com/facebook/jest/tree/master/packages/babel-jest 上的设置进行操作?请分享您的jest.config.js 和.babelrc / babel.config.js
  • 我的.babelrc 和我的jest.config.js 都在我的package.json 中
  • 尝试使用 Jest 23。Jest 24 将用于文件/glob 匹配的处理器更改为微匹配 3。这破坏了我在 Jest.transform 中的很多正则表达式
  • 感谢您的提示!我已经将它降级为 23 并且它引发了另一个问题:Requires Babel "^7.0.0-0", but was loaded with "6.26.3". 感觉好像还不支持 babel 7。

标签: javascript jestjs babeljs


【解决方案1】:

我可以让它为自己工作的唯一方法是添加:

   {
      "targets": {
        "node": "current"
      }
    }

所以我的预设是:

"presets": [
  [
    "@babel/preset-env",
    {
      "targets": {
        "node": "current"
      }
    }
  ],

然而,这似乎与我的开发设置混淆,其中包括:

    {
      "modules": false
    }

所以我包含了一个单独的 babel 'dev' 和 'test' 环境:

  "babel": {
    "env": {
      "dev": {
        "presets": [
          [
            "@babel/preset-env",
            {
              "modules": false
            }
          ],
          "@babel/preset-react"
        ],
        "plugins": [
          "@babel/plugin-proposal-class-properties"
        ]
      },
      "test": {
        "presets": [
          [
            "@babel/preset-env",
            {
              "targets": {
                "node": "current"
              }
            }
          ],
          "@babel/preset-react"
        ],
        "plugins": [
          "@babel/plugin-proposal-class-properties"
        ]
      }
    }
  },

我在我的脚本中设置了NODE_ENV,如下所示:

"test": "cross-env NODE_ENV=test jest",
"dev": "cross-env NODE_ENV=dev concurrently \"webpack --watch\" \"electron .\"",

我在 Windows 上,所以我需要包含 cross-env,我认为其他系统不需要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 2019-02-23
    • 1970-01-01
    相关资源
    最近更新 更多