Служба компилятора закрытия устарела и будет удалена. Вместо этого рассмотрите возможность локального запуска компилятора.
Обзор
Чтобы запросить скомпилированный код или другую информацию из службы Closure Compiler, необходимо отправить HTTP-запрос POST на URL-адрес https://closure-compiler.appspot.com/compile
. Тело запроса должно содержать параметры, перечисленные в Обязательных параметрах запроса , а также может содержать любые необязательные параметры, перечисленные в Необязательные параметры запроса .
Когда это возможно, эта страница ссылается на каноническую документацию по параметрам командной строки в Flags and Options . Параметры командной строки, недоступные в веб-сервисе, здесь не описаны. Некоторые параметры запроса также недоступны в командной строке или имеют другое имя.
Если сервер не сможет обработать ваш запрос, вы получите сообщение об ошибке сервера. Эти сообщения описаны в разделе « Сообщения об ошибках ».
Параметры запроса
Требуемые параметры запроса
-
js_code
илиcode_url
JavaScript для компиляции. Вы должны включить хотя бы один из этих параметров, а можете включить оба.
Параметр
js_code
должен быть строкой, содержащей JavaScript, например,alert('hello')
.Параметр
code_url
должен содержать URL-адрес файла JavaScript. Вы можете включить несколько параметровcode_url
, чтобы указать несколько входных файлов.-
compilation_level
См. документацию для
compilation_level
во Флаги и параметры .-
output_format
- Формат выходных данных службы Closure Compiler. Возможны три формата вывода:
-
xml
Выходной формат
xml
упаковывает запрошенную информацию в действительный XML.Вывод XML выглядит следующим образом:
<compilationResult> <compiledCode>var a="hello";alert(a);</compiledCode> <statistics> <originalSize>98</originalSize> <compressedSize>35</compressedSize> <compileTime>0</compileTime> </statistics> </compilationResult>
Раздел
compiledCode
содержит сжатый код JavaScript, созданный службой Closure Compiler. Этот раздел появляется только в том случае, если выcompiled_code
в запрос параметрoutput_info
со значениемcompile_code. Точно так же разделstatistics
появляется только в том случае, если вы включаете параметрoutput_info
со значениемstatistics
.Если вы включаете параметр
output_info
со значениемwarnings
, а компилятор выдает предупреждение, вывод будет включать тегwarnings
:<compilationResult> ... <warnings> <warning type="JSC_NO_SIDE_EFFECT" file="default.js" lineno="12" charno="3" line="delete 1;">warning 1</warning> <warning type="JSC_UNUSED_VAR" file="default.js" lineno="13" charno="13" line="delete 1;">warning 2 </warning> </warnings> ... </compilationResult>
Если вы
output_info
со значениемerrors
, служба компилятора Closure включит тегerrors
, если ваш код содержит синтаксическую ошибку или другую проблему, препятствующую компиляции. Тегerrors
выглядит так:<compilationResult> ... <errors> <error type="JSC_NO_SIDE_EFFECT" file="default.js" lineno="12" charno="3" line="var x=-'hello';">error 1 </error> <error type="JSC_UNUSED_VAR" file="default.js" lineno="13" charno="13" line="var x=-'hello'">error 2 </error> </errors> ... </compilationResult>
Атрибуты
file
,line
иcol
теговerror
иwarning
указывают, где служба Closure Compiler обнаружила ошибку.Если служба Closure Compiler обнаруживает ошибку, препятствующую обработке вашего ввода, вывод выглядит следующим образом:
<compilationResult> <serverErrors> <error code="1">Over quota</error> </serverErrors> </compilationResult>
-
json
Выходной формат
json
упаковывает запрошенную информацию в строку нотации объектов JavaScript (JSON). Оценка этой строки как JavaScript возвращает объект JavaScript.Вывод JSON выглядит так:
{ "compiledCode":/* raw code here */, {"errors": [ {"charno":4321, "error":"ERROR: You failed.", "lineno":1234, "file":"default.js", "type":"ERROR_TYPE", "line":"var x=-'hello';"}], "warnings": [ {"charno":4321, "lineno":1234, "file":"default.js", "type":"ERROR_TYPE", "warning":"Warning: You did something wrong!", "line":"delete 1;"}] "serverErrors":[ {"code":123,"error":"Over quota"} ], "statistics":{ "originalSize":10, "compressedSize":3000 "compileTime":10 } }
Формат JSON аналогичен формату XML: каждый тег в выводе XML соответствует свойству с тем же именем в объекте JSON.
-
text
- Формат вывода
text
возвращает необработанный текст без тегов или скобок JSON. Еслиoutput_info
включает в себяcompiled_code
, текст содержит JavaScript. Еслиoutput_info
включаетwarnings
, текст содержит предупреждающие сообщения. Еслиoutput_info
включаетstatistics
, текст содержит статистику.
Параметр
output_format
по умолчанию имеет значениеtext
. -
-
output_info
Указывает тип вывода, который вы хотите получить от компилятора. Возможны четыре вида вывода:
-
compiled_code
- Сжатая и оптимизированная версия вашего входного JavaScript.
-
warnings
- Сообщения, указывающие на возможные ошибки в вашем JavaScript.
-
errors
- Сообщения, указывающие на синтаксические ошибки или другие ошибки в вашем JavaScript.
-
statistics
Информация о степени сжатия, которую достигает Closure Compiler. Для вывода xml служба Closure Compiler возвращает статистику в следующем формате:
<compilationResult> ... <statistics> <firstStatisticName>24</firstStatisticName> <secondStatisticName>15</secondStatisticName> </statistics> </compilationResult>
-
Необязательные параметры запроса
-
js_externs
Значение этого параметра должно быть кодом JavaScript, который объявляет имена функций или другие символы. Используйте
js_externs
для сохранения символов, которые определены вне кода, который вы компилируете. Параметрjs_externs
только в том случае, если вы используете уровеньcompilation_level
ADVANCED_OPTIMIZATIONS
. Дополнительные сведения см. в разделе Расширенная компиляция .-
externs_url
Значение этого параметра должно быть URL-адресом файла, содержащего JavaScript, который объявляет имена функций или другие символы. Символы, объявленные в этом файле, сохраняются точно так же, как и символы, перечисленные непосредственно в параметре
js_externs
. Параметрexterns_url
только в том случае, если вы используете уровеньcompilation_level
ADVANCED_OPTIMIZATIONS
. Дополнительные сведения см. в разделе Расширенная компиляция .Вы можете указать этот параметр несколько раз, если у вас несколько файлов externs.
-
exclude_default_externs
По умолчанию служба Closure Compiler использует стандартный файл externs, в котором объявляются общие внешние определенные символы, такие как
document
и все его методы. Если вы НЕ хотите использовать эти общие экстерны, включите в свой запрос параметрexclude_default_externs
со значениемtrue
.Дополнительные сведения о внешних модулях см. в разделе Расширенная компиляция и внешние модули.
-
output_file_name
Если служба Closure Compiler присутствует, она кэширует скомпилированный код на один час и делает его доступным через специальный URL-адрес. В течение этого часа вы можете протестировать скомпилированный код, указав в браузере этот URL. URL-адрес имеет следующую форму:
https://closure-compiler.appspot.com/code/bf067f356d510e1c7b81347eb84f65d2/[value of output_file_name]
.-
formatting
См. документацию по
formatting
в разделе « Флаги и параметры» . В одном запросе можно указать несколько параметровformatting
.-
use_closure_library
Если вы присвоите параметру
use_closure_library
значениеtrue
, компилятор ищетgoog.require()
в исходном коде и предоставляет код библиотеки закрытия, запрошенный любыми такими операторами. Он также выполняет оптимизации, разработанные специально для кода Closure Library. См. документацию по библиотеке замыканий для получения дополнительной информации о библиотеке замыканий. Дополнительную информацию о функцииgoog.require()
см. в разделе Поиск путей в библиотеке замыканий.Параметр
use_closure_library
по умолчанию имеет значениеfalse
.-
warning_level
См. документацию для
warning_level
в Flags and Options .-
language
См. документацию по эквивалентной опции
language_in
в Flags and Options .-
language_out
См. документацию для
language_out
в Flags and Options .-
rewrite_polyfills
См. документацию по
rewrite_polyfills
в Flags and Options .-
use_types_for_optimization
См. документацию по
use_types_for_optimization
в Flags and Options .
Сообщения об ошибках
Если серверу не удастся обработать ваш запрос, вы получите одно из сообщений об ошибке сервера, перечисленных в таблице ниже. Обратите внимание, что эти сообщения об ошибках сервера отличаются от ошибок и предупреждений компилятора. Ошибки и предупреждения компилятора указывают на то, что Closure Compiler обнаружил проблему в вашем коде JavaScript. Сообщения об ошибках сервера указывают на то, что компилятор вообще не может обработать ваш код из-за ошибки в вашем запросе.
Код ошибки | Сообщение об ошибке | Значение |
---|---|---|
2 | Неизвестный режим вывода. | Значение параметра output_format отличается от xml , json или text . |
4 | Неизвестный уровень сжатия. | Значение параметраcompile_level WHITESPACE_ONLY compilation_level SIMPLE_OPTIMIZATIONS или ADVANCED_OPTIMIZATIONS . |
8 | Данные POST слишком велики. | Размер данных, отправленных вами в службу Closure Compiler, превышает 200 000 байт. И пользовательский интерфейс службы компилятора, и вызовы API используют HTTP-запрос POST для связи со службой, и общий объем данных, отправляемых в этом запросе, не может превышать 200 000 байт. Для вызовов API это ограничение распространяется на общий объем текста во всех параметрах запроса. Для пользовательского интерфейса Closure Compiler это ограничение применяется к общему объему текста как в исходном коде, так и в параметрах компилятора, таких как @code_url . Если ваш запрос слишком велик, либо переместите исходный код в отдельные файлы и ссылайтесь на них с помощью @code_url , либо используйте приложение Closure Compiler на локальном компьютере. |
9 | Файл слишком большой. | Общий объем кода из всех файлов code_url , всех файлов externs_url , всего кода js_code и всего кода js_externs превышает 1024000 байт. |
10 | Не удается получить содержимое по URL-адресу. | Произошла ошибка, когда служба Closure Compiler попыталась получить либо файл JavaScript, указанный в параметре code_url , либо файл externs, указанный в параметре externs_url . Убедитесь, что URL-адрес правильный и права доступа к файлу позволяют его просматривать. |
12 | URL сформирован неправильно. | Значение либо параметра code_url , либо параметра externs_url не является правильным URL-адресом. |
13 | Нет выходной информации для создания, но компиляция была запрошена. | Параметр output_info не указан. |
14 | Неизвестное значение output_info | Значение параметра output_info не является compiled_code , warnings или statistics . |
16 | Неизвестный уровень предупреждения | Значение параметра warning_level отличается от QUIET , DEFAULT или VERBOSE . |
17 | Неизвестный вариант форматирования. | Значение параметра formatting отличается от pretty_print . |
18 | Неизвестный параметр в HTTP-запросе | Запрос HTTP содержит параметр, отличный от одного из перечисленных в этом документе . |
19 | Недопустимое значение для output_file_name | Имя выходного файла содержит символ числа, букву, точку, подчеркивание или тире, либо содержит две последовательные точки ( .. ) |
22 | Недавно было выполнено слишком много компиляций. Попробуйте позже. | Вы отправили слишком много компиляций со своего компьютера. Через час вы сможете снова выполнить компиляцию. |
23 | Исключение компилятора (с обратной трассировкой) | Компилятор рухнул. Текст ошибки будет содержать информацию, которая поможет Google отладить проблему. |
24 | Неподдерживаемый тип входного ресурса | Тип ресурса не http:, поэтому входной файл не будет получен. |