У меня есть приложение Angular.js, которое я хочу минимизировать.UglifyJS2 ломает инъекцию зависимости в приложении Angular.js
Прежде всего, я настроил определенный конвейер gulp, чтобы автоматически обрабатывать аннотации и миниатюры.
Чтобы проверить, насколько хорошо работают неявные аннотации, я добавил аннотации, используя ngAnnotate, а затем запустил приложение с параметрами strict-di, чтобы уловить все пропущенные аннотации. Затем я добавил комментарии для всех отсутствующих аннотаций, которые я нашел. После этого все отлично работает, ngAnnotate
автоматически комментирует мой код, а strict-di
больше нет предупреждений.
Однако, когда я фактически уменьшаю свой код с помощью UglifyJS2, он не может запустить приложение, заявив, что некоторая служба не найдена.
Вот реальное сообщение об ошибке:
State change error Error: [$injector:unpr] Unknown provider: tProvider <- t
Если добавить mangle: false
опции к UglifyJS2
, он отлично работает.
- Вопрос в том, как найти виновника и почему strict-di
не поймал его?
Я отвечаю на эту проблему здесь: http: // stackoverflow.com/a/36309546/4775223 –
Спасибо @WilmerS, но ваш ответ не отвечает на мой конкретный вопрос. Я знаю, как работает DI, и я уже использую ngAnnotate. Проблема в том, что он не обрабатывает все случаи, и по какой-то причине strict-di тоже не поймает эти случаи. –
Я вижу. Кажется, вы пробовали, что бы я попробовал. Однако и технически говоря, если вы явно вводите зависимости, то удаление ngAnnotate из вашей трубы не должно иметь значения. Должна появиться та же ошибка. если нет, то ngAnnotate может иметь к этому какое-то отношение. –