Node.js 如何在Webpack中注入全局变量?
我需要一个在编译时生成的特定实例,以使我与webpack捆绑的代码可用。我的用例是针对Node.js 如何在Webpack中注入全局变量?,node.js,webpack,webpack-2,Node.js,Webpack,Webpack 2,我需要一个在编译时生成的特定实例,以使我与webpack捆绑的代码可用。我的用例是针对Map的一个实例的,但这个问题对任何变量都适用,真的 无法工作,因为我的Map实例无法通过字符串化。我可以反序列化/序列化,但这似乎效率低下 无法工作,因为我不要求捆绑程序忽略外部模块 我已经能够通过在global上设置一个值来实现这一点,但我不确定这是实现这一点的最佳方式 下面是一个令人遗憾的人为例子: webpack.config.js: const myVar = new Map([ ['a te
Map
的一个实例的,但这个问题对任何变量都适用,真的
- 无法工作,因为我的
实例无法通过字符串化。我可以反序列化/序列化,但这似乎效率低下Map
- 无法工作,因为我不要求捆绑程序忽略外部模块
global
上设置一个值来实现这一点,但我不确定这是实现这一点的最佳方式
下面是一个令人遗憾的人为例子:
webpack.config.js:
const myVar = new Map([
['a test value', () => {}]
]);
// is there a better way?
global.myVar = myVar;
module.exports = {
entry: './entry.js',
output: {
filename: './output.js'
},
target: 'node',
}
console.log(global.myVar) //=> Map { { "a test value", [Function] } }
entry.js:
const myVar = new Map([
['a test value', () => {}]
]);
// is there a better way?
global.myVar = myVar;
module.exports = {
entry: './entry.js',
output: {
filename: './output.js'
},
target: 'node',
}
console.log(global.myVar) //=> Map { { "a test value", [Function] } }
在我的真实应用程序中,我的
Map
值会对文件系统进行爬网,并构建正则表达式和处理程序的映射。这应该在编译时发生,并且是一个常量映射,所以我想在代码中将其作为常量绑定
我尝试在entry.js
内部构建Map
,但却出现了各种奇怪的“找不到模块”错误,我想主要是因为我用来构建Map
的函数首先严重滥用了webpack权限之外的目录树中的动态要求
如果您有任何见解,我将不胜感激。备选方案:使用可字符串化的数据结构(以便您可以使用define插件),并在运行时将其转换为映射。@FelixKling在我的例子中,
map
是完美的,因为我可以使用正则表达式作为键,并实现一个find
combinator来快速找到与正则表达式匹配的条目。由于它们被用作API的路由处理程序,我真的不想因为我的构建工具而牺牲应用程序设计的灵活性您不必这样做(您可以将地图转换为数组数组)。但是,如果这些值不可字符串化,那么无论如何也不会有帮助。