4

在我的 Dojo 构建中,我引入了一些第三方库。

当我完成构建过程时,由于 ReferenceErrors 而出现错误。

这可以。这是有道理的。

但是,我想告诉 Dojo 构建过程中被引用的东西。本质上,这类似于将外部变量传递给闭包编译器。

因此,我的问题是:我如何告诉 Dojo 构建过程它无法从我的代码库中推断出的引用?

这是使用 Dojo 1.8

4

1 回答 1

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 加载程序将不会执行函数体。

于 2013-01-09T20:22:05.510 回答