Почему в Примере с пловром "Hello World" отсутствует сообщение об ошибке?
Я пытаюсь начать с plovr , используя простой пример "Hello World" в заключение: окончательное руководство автор: Майкл Болин. Но моя сборка выдает ошибку. Может ли кто-нибудь там просветить меня относительно моей ошибки?
Вот мой макет файла:
C:hello-plovr
├──hello-config.js
├──hello.js
└──plovr-0744c5209a34.jar
Это содержание привет.js :
goog.provide( 'example' );
goog.require( 'goog.dom' ); // line 2
example.sayHello = function( message ) {
goog.dom.getElement( 'hello' ).innerHTML = message;
}
goog.exportSymbol( 'example.sayHello', example.sayHello );
И это содержимое hello-config.js :
{
"id": "hello-plovr",
"inputs": "hello.js",
"paths": "."
}
Вот мои результаты сборки (я бросил в Java версия в случае, если это имеет значение):
C:hello-plovr> java -jar plovr-0744c5209a34.jar build hello-config.js
JSC_MISSING_PROVIDE_ERROR. required "goog.dom" namespace never provided at hello.js line 2 : 12
BUILD FAILED: 1 Errors, 0 Warnings
Должно быть, я упустил что-то тривиальное, но я этого не вижу.
В случае, если это имеет значение, это было запущено с Java 1.6.0_24:
C:hello-plovr> java -version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02, mixed mode)
2 ответа:
Как отмечалось выше, первоначально это было вызвано ошибкой в plovr:
Http://code.google.com/p/plovr/issues/detail?id=37
Однако эта ошибка в plovr была исправлена и доступна с апреля 2011 года выпуска plovr.
Используйте более новую версию plovr (апрель 2011 г. или более позднюю) или не используйте пробелы в
goog.require
. Изменитьhello.js
, строка 2 следующим образом:goog.require('goog.dom'); // NO SPACES
Сообщается как ошибка plovr здесь: http://code.google.com/p/plovr/issues/detail?id=37
Автор Plovr предлагает использовать closure-linter , поскольку он предупреждает о проблемах с пробелами:
PS C:\hello-plovr> gjslint --strict hello.js ----- FILE : C:\hello-plovr\hello.js ----- Line 4, E:0007: (New error) Should have 2 blank lines between top-level blocks. Line 5, E:0214: Missing description in @param tag Line 7, E:0001: Extra space after "(" Line 7, E:0001: Extra space before ")" Line 8, E:0005: Illegal tab in whitespace before "goog.dom.getElement" Line 8, E:0001: Extra space after "(" Line 8, E:0001: Extra space before ")" Line 9, E:0011: Missing semicolon after function assigned to a variable Line 11, E:0001: Extra space after "(" Line 11, E:0001: Extra space before ")" Found 10 errors, including 1 new errors, in 1 files (0 files OK). Some of the errors reported by GJsLint may be auto-fixable using the script fixjsstyle. Please double check any changes it makes and report any bugs. The script can be run by executing: fixjsstyle --strict hello.js
Как указано, утилита
fixjsstyle
(включенная при установке closure-linter) может исправитьнекоторые ошибки, но не все. Один, вероятно, понадобится чтобы сделать некоторые ручные редактирования. Вот Линт-совместимая версия hello.js :goog.provide('example'); goog.require('goog.dom'); /** * @param {string} message A greeting message. */ example.sayHello = function(message) { goog.dom.getElement('hello').innerHTML = message; }; goog.exportSymbol('example.sayHello', example.sayHello);