如何在运行时“禁用”require.js?

时间:2014-07-14 21:20:10

标签: javascript angularjs requirejs amd

我的团队和我有一个AngularJS应用程序使用RequireJS但是在使用RequireJS的现有网站的上下文中加载。在构建过程中,我将所有脚本缩小/连接成一个JS文件,其中包含某些供应商库,如Lodash,Moment等。

运行与父隔离的站点很好,但在父应用程序的上下文中,我得到了well-documented error

Uncaught Error: Mismatched anonymous define() module: function () { return _; }

我无法控制父应用程序,有没有办法在运行时到"禁用" RequireJS还是配置它来忽略我的脚本?

我们目前的解决方案是修改供应商库并删除AMD代码,但这是不受欢迎的,因为我们使用Bower(带grunt-bower-install)并且想要自动更新依赖项而不是依赖于手动流程和自定义黑客。

1 个答案:

答案 0 :(得分:7)

如果您确信所有相关的脚本依赖项都受到控制,可以考虑采用的方法是在缩小/连接脚本的开头隐藏define函数。

例如,在缩小脚本的开头执行以下操作:

var __origDefine = define;
define = null;

在缩小的脚本结束时:

define = __origDefine;