关闭 - 库未正确加载

时间:2013-12-13 08:11:17

标签: javascript loading require google-closure

我的Closure环境在我的开发环境中运行良好。在一个新的文件夹&但是,文件不起作用。

例如,参加此测试脚本:

goog.require('goog.dom');
console.log(goog);
console.log(goog.dom);
goog.dom.getElement('logout').innerHTML = "Heck";

这就是全部,加上HTML中的base.js

第一个console.log显示一个包含所有正确内容的对象。所有文件也都加载到DOM中。

然而,第二个控制台日志显示undefined,因此最后一行不起作用(显然)。 Chrome控制台错误为Uncaught TypeError: Cannot call method 'getElement' of undefined

到底发生了什么事?如果我尝试XhrIo,它也是一样的。它没有在goog对象上找到方法。

感谢。

1 个答案:

答案 0 :(得分:3)

Documentation:

  

注意:不要将goog.require()语句放在同一个脚本标记中   作为使用goog.required函数或代码的代码的入口点   类。 goog.require()调用将代码添加到文档之后   包含调用的脚本标记。

所以

<script>
    goog.require('goog.dom');
    console.log(goog.dom);
</script>

打印undefined。但

<script>
    goog.require('goog.dom');
</script>
<script>
    console.log(goog.dom);
</script>

<script>
    goog.require('goog.dom');
    addEventListener('load', function() {
        console.log(goog.dom);
    });
</script>

打印一个Object。

仅供参考,还有其他可能的工作流程。例如,closurebuilder.py脚本可以帮助提前加载所有必需的文件。