我正在使用我的角度应用程序中的服务来创建uibModal,如下所示
function modal(modalConfig){ var modalInstance = $uibModal.open({ animation: true,template: require("../a/b/xyz.html"),controller: modalConfig.controller,size: modalConfig.size,controllerAs: modalConfig.controllerAs,bindToController : true,resolve: modalConfig.resolveObj }); }
请注意线路
template: require("../a/b/xyz.html"),
我想在这样的地方使用一个变量
template: require(modalConfig.templateUrl),
但是当我使用变量代替硬编码值webpack给我
Critical dependencies: 83:22-54 the request of a dependency is an expression
经过多次打击和试用发现解决方案.我所做的是这样的:
原文链接:https://www.f2er.com/angularjs/140738.htmltemplate: require("../../scripts" + modalConfig.templateUrl + ".html")
假设
>所有文件来源的根文件夹都是脚本
>并且该文件夹与写入该函数的文件的相对路径为../../scripts.
> ../../scripts modalConfig.templateUrl“.html”将构成要使用的文件的正确路径.
强制性说明
>总是写一些根文件夹的硬编码路径.不要把它放在变量中.所以这不行
var context =“../../scripts”;
template:require(context modalConfig.templateUrl“.html”)
基本路径(如实际路径的一部分)必须被硬编码为基本参考,因为它有助于webpack创建动态需求可能需要的所有模块的列表.
原因(来自webpack docs),请阅读dynamic requires和context module.