在我的开发环境中,我有一个运行良好的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对象上的方法。

谢谢。

最佳答案

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>


打印一个对象。

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

关于javascript - 关闭-库未正确加载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20561866/

10-12 13:03