【发布时间】:2016-07-14 04:33:48
【问题描述】:
如果声明了 SPEC Env,我将尝试有条件地加载我的测试:
var context = null
if (process.env.SPEC) {
context = require.context('./tests', true, /.*?SearchInput.*/);
}
context.keys().forEach(context);
这是完美的工作。 现在如果我这样做
var context = null
if (process.env.SPEC) {
var c = /.*?SearchInput.*/;
context = require.context('./tests', true, c);
}
context.keys().forEach(context);
这根本不起作用,./ 中的所有文件都匹配('./tests' 参数被忽略)
我错过了什么? 我希望 require.context 函数的第三个参数是 RegExp 对象,这样我就可以使用变量构造 RegExp。
编辑 1
这不起作用:
var context = null
if (process.env.SPEC) {
var c = new RegExp(/.*?SearchInput.*/);
context = require.context('./tests', true, c);
}
context.keys().forEach(context);
要对此进行测试,您可以编辑此项目的 tests.webpack.js 文件: https://github.com/erikras/react-redux-universal-hot-example
需要允许SPEC变量通过webpack
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify('test'),
SPEC: JSON.stringify(process.env.SPEC || null)
},
__CLIENT__: true,
__SERVER__: false,
__DEVELOPMENT__: true,
__DEVTOOLS__: false // <-------- DISABLE redux-devtools HERE
})
然后运行:npm run test
或:SPEC=t npm 运行测试
【问题讨论】:
-
您是否尝试过使用
RegExp构造函数? -
@RobbyCornelissen - 为什么会有不同?
-
@nnnnnn 不知道。它应该可以与分配给变量的文字一起正常工作,但根据 OP 它不能。尝试使用构造函数将提供额外的数据点,并可能有助于确定原因。
-
@RobbyCornelissen 是的,我尝试了 RegExp 构造函数,但它不起作用。我编辑了问题。
-
var c = new RegExp(/.*?SearchInput.*/);应该是var c = new RegExp('.*?SearchInput.*');,因为RegExp构造函数接受string,而不是正则表达式文字。
标签: javascript commonjs