webpack - 在 Jest 测试中使用 webpack 的工作加载器解析导入

标签 webpack loader jestjs worker

我正在编写 Jest 测试,但在解析此使用 webpack 的 worker-loader 的导入时遇到问题

import ImageInfoWorker from 'worker-loader?name=image_info!@WORKERS/image-info';

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

import Store from '@SUPPORT/store';
import * as api from '@SUPPORT/api';

这是来自 package.json 的相关片段

  "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 部分:

        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')
        }
      },

最佳答案

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

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

接下来,将以下内容添加到您的 package.json 中:

"jest": {
    "moduleNameMapper": {
        "^worker-plugin/loader.+$": "<rootDir>/EmptyModule"
    }
}

关于webpack - 在 Jest 测试中使用 webpack 的工作加载器解析导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42567535/

相关文章:

javascript - Webpack:没有产生预期的包

javascript - 页面加载后 Spinner/Loader 不会停止

jestjs - 无法使用 ts-jest 转换 node_modules 中的文件夹

javascript - 如何用 Jest 模拟 DataTransfer

javascript - 强制模块模拟在测试中抛出错误

jquery - 使用 webpack 在 Angular2 中包含 jQuery 并从组件访问它

reactjs - CommonChunkPlugin 不是构造函数

javascript - webpack require (jquery) 不起作用

sass - 加载器列表中的元素应该有 'loader' 或 'loaders' 与 sass-loader webpack

java - 检测加载程序的 SQLite 数据库上的更改