使用require(' ...')使用变量与使用webpack中的字符串

时间:2016-05-15 17:48:27

标签: javascript webpack

我有一个对我没有多大意义的问题。

我映射了一个具有"名称"的对象数组。和一个" href"属性。

let appleIcons = _.map(appleIcons, appleIcon => {
  appleIcon.href = require(appleIcon.href);
  return appleIcon;
}); 

在循环内部我想要图像,但它会抛出错误"。* $:11未捕获错误:找不到模块"。

当我打印appleIcon.href的值并尝试将其直接放入require('')时,它可以正常工作。

appleIcons = _.map(appleIcons, appleIcon => {
  appleIcon.href = require('./../../mobile-config/apple-icon-57x57.png');
  return appleIcon;
});

那么你能解释一下为什么第二个例子有效并且第一个例子会抛出错误吗?如何将变量置于require('')?

之内

谢谢!

2 个答案:

答案 0 :(得分:17)

由于Webpack在构建时运行,因此当名称是动态变量时,它无法确定要捆绑的模块。您可以通过指定路径的一部分来提供提示(例如,如果您知道所有模块都在一个目录中)。

这个答案有助于: https://stackoverflow.com/a/33048000

(同样通过Webpack检查require.context。另一个例子是业力测试,here。)

或者 - 如果您知道高级文件名,最好添加另一个构建步骤以向文件输出字符串,这样Webpack就可以捆绑它们。

答案 1 :(得分:0)

添加一个空字符串可以解决我的问题。因此,下面的代码应该可以工作:

let appleIcons = _.map(appleIcons, appleIcon => {
  appleIcon.href = require('' + appleIcon.href);
  return appleIcon;
});