如何包含谷歌关闭的依赖项

时间:2014-12-08 05:05:29

标签: google-closure-compiler google-closure google-closure-library

我运行的是非常基本的文件:

goog.provide('test');

goog.require('goog.net.XhrIo');
goog.require('goog.json.Serializer');
goog.require('goog.dom');
goog.require('goog.ui.HoverCard');
goog.require('goog.positioning');
goog.require('goog.dom.dataset');

但我得到

test.js:3: ERROR - required "goog.net.XhrIo" namespace never provided
goog.require('goog.net.XhrIo');

使用

进行编译
java -d32 -client -jar compiler/compiler.jar --js compiler/closure-library/closure/goog/base.js --js test.js --warning_level=VERBOSE

如何找到goog库?

编辑:

我也尝试使用在线版http://closure-compiler.appspot.com/home并仍然获得:

    JSC_MISSING_PROVIDE_ERROR: required "goog.net.XhrIo" namespace never provided at line 3 character 0 in test.js
goog.require('goog.net.XhrIo');
^
JSC_MISSING_PROVIDE_ERROR: required "goog.json.Serializer" namespace never provided at line 4 character 0 in test.js
goog.require('goog.json.Serializer');
^
JSC_MISSING_PROVIDE_ERROR: required "goog.dom" namespace never provided at line 5 character 0 in test.js
goog.require('goog.dom');
^
JSC_MISSING_PROVIDE_ERROR: required "goog.ui.HoverCard" namespace never provided at line 6 character 0 in test.js
goog.require('goog.ui.HoverCard');
^
JSC_MISSING_PROVIDE_ERROR: required "goog.positioning" namespace never provided at line 7 character 0 in test.js
goog.require('goog.positioning');
^
JSC_MISSING_PROVIDE_ERROR: required "goog.dom.dataset" namespace never provided at line 8 character 0 in test.js
goog.require('goog.dom.dataset');

1 个答案:

答案 0 :(得分:5)

记住Google Closure是一个工具集合非常重要。

虽然这些工具具有协同作用,但谷歌在这些工具之间保持了相当程度的独立性。 Closure编译器可以在没有Closure库的情况下工作,Closure库可以在没有Closure Compiler的情况下工作。两者都可以在没有Closure模板等的情况下工作。

封装构建器Python脚本已经制作并包含在内,以提供Closure Compiler所缺少的一些东西。然而,现在你应该很少使用它们。

Closure Compiler最近允许使用通配符表达式来解决这个特殊问题。

java -d32 -client -jar compiler/compiler.jar \
    --closure_entry_point=test               \
    --only_closure_dependencies              \
    --warning_level=VERBOSE                  \
    compiler/closure-library/**

检查compiler/closure-library/中的每个文件,看它是否提供必要的命名空间。不包含任何其他文件(only_closure_dependencies)。