我使用的是karma@1.5.0和webpack@1.8.4
我想将源文件拉入测试。此源文件具有外部依赖关系,但在测试期间未运行的其他环境中解析该外部依赖关系。
我要导入的文件中的外部依赖关系如下所示:
import MyModule from 'external!myFile';
在我的测试环境中,外部没有任何意义。 我基本上想要替换外部!myFile' 同 ' ../../富/酒吧/ myFileLocal'
我尝试了一些不同的东西,最简单的是npm包 "字符串替换"
我的webpack配置专门包含在我的业力配置中:
webpack: {
module: {
loaders: [
{ test: /\.js/, exclude: /node_modules/, loader: 'babel-loader' },
{
test: /srcFileName\.js$/,
loader: 'string-replace-loader',
query: {
search: 'external!myFile',
replace: '../../testlibs/myFile',
strict: true
}
}
]
},
watch: true
},
当webpack编译源代码时,替换不会发生,我只是得到错误:
Module not found: Error: Cannot resolve module 'external' in (my abs path
edited)\js\models
@ ./js/models/myFile.js 9:31-67
我尝试了一些使用自定义加载程序的其他方法,但我仍然需要在“外部”之后映射文件路径!'
我遗漏了哪些明显的东西? 谢谢
更新:我已经从" myFile"编辑了测试属性正则表达式to" srcFileName"澄清一下,还是有同样的问题。
更新:我的正则表达式已关闭。文件名是srcFileName1。将测试更改为/srcFileName1\.js$/
解决了我的问题。
答案 0 :(得分:0)
替换external!myFile
导入的规则不适用于您将其导入的文件,而是适用于实际的myFile.js
。正则表达式应该与包含导入的文件匹配:
{
test: /fileThatContainsImport\.js$/,
loader: 'string-replace-loader',
query: {
search: 'external!myFile',
replace: '../../testlibs/myFile',
strict: true
}
}