Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌关闭:goog.require无法找到:goog.ui_Javascript_Google Closure - Fatal编程技术网

Javascript 谷歌关闭:goog.require无法找到:goog.ui

Javascript 谷歌关闭:goog.require无法找到:goog.ui,javascript,google-closure,Javascript,Google Closure,我正在学习googleclosure,当我尝试使用goog.ui组件(任何一类)时,我得到了错误goog.require无法找到:goog.ui 我的代码是: goog.require('goog.dom'); goog.require('goog.json'); goog.require('goog.events'); goog.require('goog.ui.HoverCard'); goog.require('goog.positioning.AnchoredPosition'); go

我正在学习googleclosure,当我尝试使用
goog.ui
组件(任何一类)时,我得到了错误
goog.require无法找到:goog.ui

我的代码是:

goog.require('goog.dom');
goog.require('goog.json');
goog.require('goog.events');
goog.require('goog.ui.HoverCard');
goog.require('goog.positioning.AnchoredPosition');
goog.require('goog.positioning.Corner');
goog.require('goog.ui.Component.EventType'); 
goog.require('goog.ui');
其他组件(至少在我尝试加载任何ui元素之前)工作正常


有什么建议吗?大约两天前,我从git克隆了这个版本。我不是在编译,因为在这个阶段,我只是想弄清楚如何编写代码。

我能够通过以下方式消除这种情况:

  • 直接从google的git存储库加载
    base.js
    文件:
    http://closure-library.googlecode.com/git/closure/goog/base.js

  • 消除了将
    'goog.ui'
    与其任何子组件分开的企图;及

  • require
    调用直接移动到HTML头部(在脚本标记中),而不是将它们加载到头部的脚本中


  • 这似乎并不完全令人满意。

    您可以对以前由
    goog.provide()提供的元素使用
    goog.require()

    从不提供
    goog.ui
    ,因为它不是一个组件,也不是可以直接与“静态”方法一起使用的东西(例如,与具有
    listen()
    方法的
    goog.events
    相反)。 这只是一个重新组合所有可视组件的命名约定


    但是,例如,您可以执行
    goog.require('goog.ui.Component')
    goog.require('goog.ui.Button')

    一,。您以前在哪里加载base.js?2.我认为这是最重要的部分。没有
    goog.provide('goog.ui')
    anywhere,仅提供
    goog.ui.Component
    ,等等@matrixprog我是从本地安装加载的,它是从git克隆的,但通过我的Web服务器加载的(也就是说,我托管我自己的副本)。我相信你是在未编译模式下运行的。确保您已将
    base.js
    (以及您的DEP,如果它们存在)作为第一个脚本src标记加载,然后将
    goog.require
    调用加载到它们自己的脚本标记中,最后将您的应用程序代码加载到另一个脚本标记中。@AlexLaertes您的评论是本页最有见地的内容。我当然不是在编译,你说得很对。如果你想把这个问题变成一个答案,我当然会接受。@Marcin我把这个问题传递给你:)你的问题有两个部分:无法要求
    goog.ui
    命名空间(你不需要,由@JulCh建议),以及你必须将require调用从应用程序代码中分离出来(这是你最终发现的;我只是给你指出了原因)。