首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Jest测试中使用webpack的worker-loader解决导入问题

在Jest测试中使用webpack的worker-loader解决导入问题
EN

Stack Overflow用户
提问于 2017-03-03 06:53:22
回答 4查看 5.4K关注 0票数 20

我正在写一个Jest测试,在解析这个使用了webpack的worker-loader的导入时遇到了问题

代码语言:javascript
复制
import ImageInfoWorker from 'worker-loader?name=image_info!@WORKERS/image-info';

我还有其他一些别名可以在我的测试中正确解析,例如:

代码语言:javascript
复制
import Store from '@SUPPORT/store';
import * as api from '@SUPPORT/api';

下面是来自package.json的相关代码片段

代码语言:javascript
复制
  "jest": {
    "moduleFileExtensions": ["js", "jsx"],
    "moduleNameMapper": {
      "^@CSS/(.*)$": "<rootDir>/css/$1",
      "^@COMPONENTS/(.*)$": "<rootDir>/js/components/$1",
      "^@MODELS/(.*)$": "<rootDir>/js/models/$1",
      "^@STORES/(.*)$": "<rootDir>/js/stores/$1",
      "^@SUPPORT/(.*)$": "<rootDir>/js/support/$1",
      "^(.*?)@WORKERS/(.*)$": "$1<rootDir>/js/workers/$2"
  }
}

下面是我的webpack配置的resolve部分:

代码语言:javascript
复制
        resolve: {
          extensions: ['.js', '.jsx'],
          modules: [process.env.NODE_PATH, 'node_modules'],
          alias: {
            '@CSS':        path.join(projectRoot, 'css'),
            '@COMPONENTS': path.join(projectRoot, 'js', 'components'),
            '@MODELS':     path.join(projectRoot, 'js', 'models'),
            '@STORES':     path.join(projectRoot, 'js', 'stores'),
            '@SUPPORT':    path.join(projectRoot, 'js', 'support'),
            '@WORKERS':    path.join(projectRoot, 'js', 'workers')
        }
      },
EN

回答 4

Stack Overflow用户

发布于 2020-06-18 02:46:54

如果不需要解析路径,可以使用"moduleNameMapper"忽略导入。

首先,创建一个包含export default ''的空模块。

接下来,将以下内容添加到package.json

代码语言:javascript
复制
"jest": {
    "moduleNameMapper": {
        "^worker-plugin/loader.+$": "<rootDir>/EmptyModule"
    }
}
票数 5
EN

Stack Overflow用户

发布于 2021-02-01 18:23:37

这个solution对我很有效。

在名为__mocks__的文件夹中创建您需要的具有模拟实现的workerMock.js文件(当然,您可以在您喜欢的任何地方创建它):

代码语言:javascript
复制
module.exports = Object.create(null);

然后在您的jest配置中添加以下配置:

代码语言:javascript
复制
"moduleNameMapper": {
  "\\.worker.js":"<rootDir>/__mocks__/workerMock.js"
}
票数 3
EN

Stack Overflow用户

发布于 2018-06-22 01:34:14

根据cpojer的说法,Jest不支持web-workers。你应该使用模仿,阅读更多的here

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42567535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档