Javascript 网页包字符串替换加载程序不工作
我正在把我的项目和网页包捆绑在一起。为了操作某些文件,我必须替换特定节点模块中的特定值。为了实现这一点,我使用了字符串替换加载程序。我在我的网页配置中添加了以下代码,但没有成功Javascript 网页包字符串替换加载程序不工作,javascript,node.js,webpack,Javascript,Node.js,Webpack,我正在把我的项目和网页包捆绑在一起。为了操作某些文件,我必须替换特定节点模块中的特定值。为了实现这一点,我使用了字符串替换加载程序。我在我的网页配置中添加了以下代码,但没有成功 { test: /\.js$/, loader: 'string-replace', query: { search: '[MouseEvent]', replace: '[]' } } 在bundeld文件中,字符串不会被替换。这些文件位于文件夹节点_m
{
test: /\.js$/,
loader: 'string-replace',
query: {
search: '[MouseEvent]',
replace: '[]'
}
}
在bundeld文件中,字符串不会被替换。这些文件位于文件夹节点_modules/ng2 bootstrap中。那么,我是否也必须说明这一点 您应该使用
include:[/node\u modules\/module\u name/]
,因为默认情况下,网页包不包括node\u模块
但是,在阅读类似问题的问题时,您可能必须使用“排除,包括”如下所示:
{
test: /\.js$/,
loader: 'string-replace',
exclude: /node_modules(?!\/module_name)/
query: {
search: '[MouseEvent]',
replace: '[]'
}
}
如果您想阅读该问题
评论后编辑:
经过一些尝试,我已经完成了这项工作(使用了其他插件,但似乎与您的插件类似),我使用以下代码完成了这项工作:
preLoaders: [
{
test: /\.js$/,
loader: StringReplacePlugin.replace({
replacements: [
{
pattern: /.*?(react).*?/ig,
replacement: function (match, p1, offset, string) {
console.log("found");
return "found";
}
}
]}),
include: /node_modules\\react.*/
}
],
它可能在加载程序上运行,但我已经在预加载程序上运行过了,因为我已经有了一个js加载程序。
请注意,错误出现在include/exclude的正则表达式上。但是我有点困惑,首先你写了include,但在这个例子中它是exclude。我猜它排除了,因为您说默认情况下排除了node\u模块,并且使用(?!\/module\u name),我猜只包括了特定的模块。我现在尝试了几种不同的方法,但都没有成功。在我看了这个问题之后,我引用了第二种方法。您尝试过“排除方法”吗?我尝试过include:[/node\u modules\/ng2 bootstrap/]和exclude:[/node\u modules(?!\/ng2 bootstrap)/]。为了进行测试,我将整个模块放在一个libs文件夹中。然后我在./custom_modules/ng2 bootstrap/ng2-bootstrap.js模块解析失败中得到以下错误消息:/node_modules/string replace loader/index.js?{“search”:“[MouseEvent]”,“replace”:“[]”,“flags”:“g”}/自定义_modules/ng2 bootstrap/ng2-bootstrap.js意外标记(2:2)您可能需要适当的加载程序来处理此文件类型。node_模块完全被忽略,但加载程序还有另一个问题。我也尝试了您使用的插件,并将模式更改为/*?(MouseEvent).*?/ig但现在我遇到了几个错误,比如:出错。/~/ng2 bootstrap/components/rating/rating.module.js模块构建失败:TypeError:无法读取未定义的属性'hasOwnProperty',我试图使用它作为预加载程序和加载程序配置,但出现了相同的错误OK,它的工作插件:)您现在的问题在于更换,你到底想换什么?