【发布时间】:2017-07-22 21:27:16
【问题描述】:
我正在编写 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的相关sn-p
"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')
}
},
【问题讨论】:
-
您找到解决问题的方法了吗?
-
@JuHwon 不,我们没有。
-
信息不足。你确定你在测试中运行 webpack 吗?问题是 worker-loader 是 webpack 的东西,所以你真的需要在测试之前构建。 jest 在 node 中运行,并且 node 没有 worker,因此您需要将 worker 设置为内联,使用 webpack 构建所有内容并运行测试。
-
你试过github.com/developit/jsdom-worker 吗?这适用于普通工人。我不确定使用
worker-loader导入模块的代码。
标签: webpack loader jestjs worker