Jest transformIgnorePatterns 不起作用

IT技术 javascript reactjs jestjs babel-jest
2021-04-30 02:31:08

我花了很长时间查看与此相关的其他问题并查看 Github 上的其他项目,但似乎没有一个答案对我有用。

我正在我的项目中加载第三方库,并且在运行 Jest 测试时出现错误

export default portalCommunication;
^^^^^^

SyntaxError: Unexpected token export

> 1 | import portalCommunication from 'mathletics-portal-communication-service';

我尝试以多种方式更新我的 Jest 配置以使其转译这个库,但我总是遇到相同的错误。

这是我当前的 jest.config.js 文件:

module.exports = {
    moduleNameMapper: {
        '\\.(css|scss)$': 'identity-obj-proxy',
        '\\.svg$': '<rootDir>/test/mocks/svg-mock.js'
    },
    setupFiles: ['./test/test-setup.js'],
    transformIgnorePatterns: [
        '<rootDir>/node_modules/(?!mathletics-portal-communication-service)'
    ]
};

我还尝试添加转换属性来针对这个 mathletics-portal-communication-service 目录运行 babel-jest。

请帮忙!

4个回答

在我将 .babelrc 更改为 babel.config.js 之前,transformIgnorePatterns 对我不起作用,如下所示:

module.exports = {
    "presets": [
        "@babel/preset-env"
    ]
};

如本评论所示:https : //github.com/facebook/jest/issues/6229#issuecomment-403539460

作为目前的解决方法,我已更改我的配置以使用该moduleNameMapper选项为该库加载模拟类。我宁愿使用它,transformIgnorePatterns所以仍然会欣赏任何想法。

新配置:

module.exports = {
    moduleNameMapper: {
        '\\.(css|scss)$': 'identity-obj-proxy',
        '\\.svg$': '<rootDir>/test/mocks/svg-mock.js',
        'mathletics-portal-communication-service': '<rootDir>/test/mocks/mathletics-portal-communication-service-mock.js'
    },
    setupFiles: ['./test/test-setup.js']
};

添加尾部斜杠为我解决这个问题:

{
    // ...
    transformIgnorePatterns: [
        '<rootDir>/node_modules/(?!mathletics-portal-communication-service/)'
    ]
};

我组织中的另一个团队添加了一些通用module。这不是转译,所以问题。

我跟着这个:https : //babeljs.io/docs/en/configuration#whats-your-use-case

  1. 将我的转换.babelrcbabel.config.json
  2. 在开玩笑的配置中添加了这个: transformIgnorePatterns: ['/node_modules/(?!(@companyName)/).*/'],

这解决了我的问题。