在我的 Dojo 构建中,我引入了一些第三方库。
当我完成构建过程时,由于 ReferenceErrors 而出现错误。
这可以。这是有道理的。
但是,我想告诉 Dojo 构建过程中被引用的东西。本质上,这类似于将外部变量传递给闭包编译器。
因此,我的问题是:我如何告诉 Dojo 构建过程它无法从我的代码库中推断出的引用?
这是使用 Dojo 1.8
在我的 Dojo 构建中,我引入了一些第三方库。
当我完成构建过程时,由于 ReferenceErrors 而出现错误。
这可以。这是有道理的。
但是,我想告诉 Dojo 构建过程中被引用的东西。本质上,这类似于将外部变量传递给闭包编译器。
因此,我的问题是:我如何告诉 Dojo 构建过程它无法从我的代码库中推断出的引用?
这是使用 Dojo 1.8
我自己也遇到了这个。现在我假设您提到的 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 加载程序将不会执行函数体。