有没有一种方法可以配置全局变量作为jest中“ moduleNameMapper”的目标?

时间:2020-04-20 07:14:41

标签: angular jestjs webpack-externals

我有一个从另一个程序包中导入的角度应用程序,如下所示:

import { Logger } from '@myorg/cif-core';

该软件包仅提供了一个捆绑的js文件,该文件将全局变量设置为myorg-cif-core。因此,我们在webpack.config.js中具有以下外部配置:

module.exports = {
  externals: {
    '@myorg/cif-core': 'myorg_cif_core'
};

我现在想从Karma切换到Jest并面对此问题,因为它无法解决从@myorg/cif-core的导入。

我尝试将捆绑软件导入test-setup.ts文件中,以便在测试中使用该捆绑软件

import 'node_modules/@myorg/cif-core/bundles/cif-core.min.js';

并在jest.config.js

中定义变量名称
moduleNameMapper: {
  '@myorg/cif-core': 'myorg_cif_core'
},

但是,似乎总是有些错误,因为我总是遇到以下错误:

Configuration error:

Could not locate module @myorg/cif-core mapped as:
myorg_cif_core.

Please check your configuration for these entries:
{
  "moduleNameMapper": {
    "/^@myorg\/cif-core/": "myorg_cif_core"
  }
}

我也已经尝试了其他一些变体,例如在jest.config.js中定义全局变量,但是没有运气。 :( 有什么办法可以使这项工作吗?通过我在Google上搜索并查看此处的代码https://github.com/facebook/jest/blob/aa64672e728738926571746a85c57d1658bdaf55/packages/jest-resolve/src/index.ts所发现的结果,似乎根本不支持此功能-至少moduleNameMapper不支持。

我做错什么了吗?还是有其他解决方法?

谢谢:)

0 个答案:

没有答案