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

Если вас интересует сразу решение проблемы, лучше сразу промотать вконец поста.

Деплой закончился, полез на сервер, все хорошо, всё прекрасно, пока я не зашел на страницу где мы реализовали новую фичу. Консоль выдала:

WARNING: Tried to load angular more than once.

Первым делом конечно же начинаю гуглить, находится штук 7 страниц с описанием ошибки и её решения. После беглого просмотра, я понял что не одно из указаных решений мне не подходит.

Что только я не пытался делать, отключал uglify, concat, изменял сборку. Менял логику работы отдельных частей.

Прошло около 6 рабочих часов… и десяток попыток решить задачу…

Решение пришло в голову моему коллеге. Всё естественно оказалось проще чем мы думали. Дело в том что, реализуя новую фичу, мы решили начать разбивать проект на модули, вьюхи соответсвенно переместились каждый в папку своего модуля.

А вот Grunt этого не знал, после сборки проекта, на сервер новые вьюхи не попадали. При попытке прогрузить модуль и загрузить нужную вьюху, вьюха на сервере не находилась, и вместо неё прогружался основной layout, в котором снова грузился ангуляр, и все повторялось. При этом никаких явных ошибок типа 404 не было.

Проверьте, все ли вьюхи у вас попадают на сервер, действительно ли грузится по тому пути который ожидается. Особенно если проект локально работает прекрасно, а после сборки и загрузки на сервер ломается.
Если ожидается что вьюха будет по пути /views/view.html проверьте, есть ли она там на сервере. Приложение может при отсутствии файла подгрузить вместо неё основной лэйаут, который все сломает.

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