在我的Dojo构建中,我正在吸引一些第三方库。
当我完成构建过程时,由于ReferenceErrors,我收到了错误。
这很好。这是有道理的。
但是,我想告诉Dojo构建过程有关被引用的内容。从本质上讲,这类似于将外部传递给Closure Compliler。
因此,我的问题是:如何告诉Dojo构建过程有关它无法从我的代码库中推断的引用?
这是使用Dojo 1.8
答案 0 :(得分:4)
我自己就碰到了这个。现在,我假设您引用的ReferenceErrors适用于navigator
,window
,document
等浏览器对象。如果是这样,那么这是由Dojo构建过程本身引入的问题,因为构建是由在Rhino内部运行的dojo.js执行的,其中未定义浏览器全局对象。这是一个dojo / Rhino错误,而不是一个闭包编译器错误,因此没有什么可以传递给闭包来改变它。例如,像
(function(){
window.alert("hello");
})();
如果它包含在dojo层中,将破坏你的dojo构建。当dojo AMD加载器解析上述脚本的依赖关系时,它将运行函数体,导致ReferenceError,因为Rhino中不存在窗口。
要解决此问题,请将脚本包装为AMD模块
define([], function(){
window.alert("hello");
});
然后在dojo构建期间,AMD加载程序将执行 NOT 函数体。