2

Я, наконец, дошел до того, что мой код javascript компилируется в компиляторе google без каких-либо ошибок или предупреждений. Теперь я хочу перекомпилировать созданный код, и когда я вставляю этот код в компилятор, я получаю более 100 предупреждений: большинство из них - JSC_REDECLARED_VARIABLE и несколько JSC_INEXISTENT_PROPERTY.компилятор google закрытия - двойная компиляция

Почему?

enter image description here

+0

Можете ли вы показать пример, чтобы воспроизвести эту ошибку? Это звучит довольно маловероятно (ошибка 'JSC_REDECLARED_VARIABLE', например, будет означать, что GCC создает код, который объявляет одну и ту же переменную, по крайней мере, дважды). –

+0

@RobW: вот скриншот проблемы; список просто продолжается. – frenchie

+0

Основной файл js - это около 4000 строк с вызовами функций во всем мире; не может просто уменьшить демо. – frenchie

ответ

1

Я не думаю, что Google Closure Compiler создает код, предназначенный для дальнейшей компиляции.

Чтобы правильно составить код, вам необходимо сохранить некоторую структуру. Но эта дополнительная структура относится к числу вещей, удаленных компилятором, и без нее компилятор не может правильно интерпретировать код.

Вы должны быть в состоянии сделать более легкие способы компиляции, но не продвинутые.

+0

Сначала я попытался скомпилировать свой код в простом режиме, а затем скопировать этот вывод, чтобы сделать передовую компиляцию: те же проблемы. Похоже, что все проблемы исходят из этой линии: function ... (a) {... a = ему не нравится, что параметр функции получает новое назначение – frenchie

+0

Лучшее, вероятно, только для компиляции. Почему вы хотите скомпилировать дважды? –

+0

Ну, я планирую сделать двойную обфускацию, поэтому я хотел посмотреть, как выглядит код, созданный компилятором google, перед тем, как вставить его в обфускатор. Но может быть двойным - ничего не может быть лучше всего. – frenchie

0

REDECLARED_VARIABLE ПРЕДУПРЕЖДЕНИЕ не является ошибкой. Он предназначен для указания вероятной проблемы для разработчика. Разработчик может игнорировать это, если они знают, что они делают, и компилятор делает это.

Смежные вопросы