1

我正在为 libphonenumber使用 Google 闭包在线编译器。这是编译器代码:

// ==ClosureCompiler==
// @output_file_name default.js
// @compilation_level SIMPLE_OPTIMIZATIONS
// @use_closure_library true
// @code_url http://libphonenumber.googlecode.com/svn/trunk/javascript/i18n/phonenumbers/phonemetadata.pb.js
// @code_url http://libphonenumber.googlecode.com/svn/trunk/javascript/i18n/phonenumbers/phonenumber.pb.js
// @code_url http://libphonenumber.googlecode.com/svn/trunk/javascript/i18n/phonenumbers/metadatalite.js
// @code_url http://libphonenumber.googlecode.com/svn/trunk/javascript/i18n/phonenumbers/phonenumberutil.js
// @code_url http://libphonenumber.googlecode.com/svn/trunk/javascript/i18n/phonenumbers/asyoutypeformatter.js
// ==/ClosureCompiler==

这编译成功,但是当我在 html 中包含编译的 js 文件时,它会给出错误:undefined is not a function,第 196 行
我怀疑它与goog.require('goog.proto2.Message'); ,但到目前为止还没有运气。

最终目标是进行电话号码验证,如下所示:

var phoneUtil = i18n.phonenumbers.PhoneNumberUtil.getInstance();
var number = phoneUtil.parseAndKeepRawInput('1234567899', 'XX');
var isNumberValid = phoneUtil.isValidNumber(number);

如何解决TypeError: goog.proto2.Message.set$Metadata is not a function

4

2 回答 2

0

set$Metadata此提交中删除了该方法: https ://github.com/google/closure-library/commit/d49d52de4577aea38dd0d3ec76a931c2f551dbf3

于 2015-04-28T15:28:11.180 回答
0

由于谷歌将代码移至Github ,然后在谷歌在线闭包编译器中使用以下代码来获取最新的:

// ==ClosureCompiler==
// @compilation_level SIMPLE_OPTIMIZATIONS
// @output_file_name libphonenumber.js
// @use_closure_library true
// @code_url https://github.com/googlei18n/libphonenumber/raw/master/javascript/i18n/phonenumbers/phonemetadata.pb.js
// @code_url https://github.com/googlei18n/libphonenumber/raw/master/javascript/i18n/phonenumbers/phonenumber.pb.js
// @code_url https://github.com/googlei18n/libphonenumber/raw/master/javascript/i18n/phonenumbers/metadata.js
// @code_url https://github.com/googlei18n/libphonenumber/raw/master/javascript/i18n/phonenumbers/phonenumberutil.js
// @code_url https://github.com/googlei18n/libphonenumber/raw/master/javascript/i18n/phonenumbers/asyoutypeformatter.js
// ==/ClosureCompiler==
于 2015-09-07T09:41:36.180 回答