我运行的是非常基本的文件:
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');
答案 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
)。