gpt4 book ai didi

javascript - require.context : inline RegExp works, var RegExp 不

转载 作者:数据小太阳 更新时间:2023-10-29 04:50:38 25 4
gpt4 key购买 nike

如果声明了 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 run test

最佳答案

Sokra 在 webpack github 上回答了这个问题,说传递给 require.context 的正则表达式必须是静态可分析的。这就是为什么传递 /thing/ 有效但不是 new RegExp(thing)

https://github.com/webpack/webpack/issues/4772

关于javascript - require.context : inline RegExp works, var RegExp 不,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38365550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com