ПРЕДУПРЕЖДЕНИЕ. Пыталось загрузить angular более одного раза. когда я включаю JQuery

Я создаю приложение yoman с angular -генератором.

Библиотеки js, включенные в мой файл index.html:

<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/modernizr/modernizr.js"></script>
<script src="bower_components/angular/angular.js"></script>   
<script src="bower_components/angular-ui-router/release/angular-ui-router.js"></script>
<script src="bower_components/d3/d3.js"></script>
<script src="bower_components/select2/select2.js"></script>
<script src="bower_components/angular-ui-select2/src/select2.js"></script>

Проблема возникает только в том случае, если jquery включен до angular, и это не происходит, если это после него.

Проблема как состояния заголовка заключается в том, что я получаю "ПРЕДУПРЕЖДЕНИЕ: Пытался загрузить angular более одного раза" в консоли, и приложение не может инициализировать.

Есть ли у кого-нибудь подсказки, почему это может случиться?

У меня есть одно ng-приложение, я включаю angular только один раз... и все. Не похоже, что это связано с конфигурацией, так как изменение положения script исправляет ее.

У вас есть какие-то подсказки?

Кто-нибудь знает, могу ли я настроить, чтобы включить порядок скриптов? Поскольку я использую angular -генератор, я установил это с помощью usemin, чтобы включить скрипты bower. Интересно, есть ли способ указать, в какой порядок включить скрипты.

Это файл bower.json для моего проекта:

{
  "name": "<name>",
  "version": "0.0.0",
  "dependencies": {
    "angular": "1.2.15",
    "json3": "~3.2.6",
    "es5-shim": "~2.1.0",
    "angular-ui-router": "~0.2.10",
    "modernizr": "~2.8.1",
    "d3": "~3.4.6",
    "angular-ui-select2": "~0.0.5"
  },
  "devDependencies": {
    "angular-mocks": "1.2.15",
    "angular-scenario": "1.2.15"
  }
}

Я пытался искать в google без везения. Спасибо заранее!

Обновление 1:

Я только выяснил, что если я включу скрипты таким образом, angular не будет включен дважды, и он всегда будет загружен первым.

  <!-- build:js scripts/vendor.js -->
  <script src="bower_components/angular/angular.js"></script>
  <!-- bower:js -->
  <script src="bower_components/jquery/dist/jquery.js"></script>
  <script src="bower_components/modernizr/modernizr.js"></script>
  <script src="bower_components/angular-ui-router/release/angular-ui-router.js"></script>
  <script src="bower_components/d3/d3.js"></script>
  <script src="bower_components/select2/select2.js"></script>
  <script src="bower_components/angular-ui-select2/src/select2.js"></script>
  <!-- endbower -->

Не лучшее решение, но по крайней мере на данный момент... В любом случае, я хотел бы иметь все внутри bower: js tags.

Ответ 1

После долгих часов тестирования... оказалось, что в моем файле index.html у меня был

<ui-view />

который будет использоваться маршрутизатором angular ui и заменяет его на это, сделал трюк.

<ui-view></ui-view>

Ответ 2

Для меня это произошло, когда я неправильно ссылался на свой взгляд на моих маршрутах.

У меня было:

.when('/route', {
      templateUrl: 'views/myPage.html',
      controller : 'myCtrl'
})

но мой взгляд был назван views/mypage.html

Сообщение об ошибке не то, что я ожидаю. Я бы ожидал отсутствие ошибки представления.

Ответ 3

Это случилось со мной также с .NET и MVC 5, и через некоторое время я понял, что внутри метки: ngview

снова включается в сценарии раздела с вами. Чтобы решить проблему на стороне сервера, я верю частичное представление. Что-то вроде:

public ActionResult Index()
{
    return View();
}

public ActionResult Login()
{
    return PartialView();
}

public ActionResult About()
{
    return PartialView();
}

Ответ 4

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

Чтобы устранить вышеуказанное предупреждение, я повторно включил файлы в следующем порядке:

jquery.js
jqueryui.js
angular.js

Примечание.. Вы должны добавить тег jquery script до angularjs, чтобы угловые символы могли заменить jqLite на jquery.

Кроме того, мой код работал с AngularJS v1.2.0, но не с более высокой версией angular. Поэтому проверьте совместимость с jquery и совместимостью с угловыми версиями.

Ответ 5

Да, я решил свои проблемы, отсортировав порядок JS script на странице html.

Если поставить angular js script в первом порядке, этого больше не будет.

Это очень странно.

Спасибо.

Ответ 6

Я столкнулся с подобной проблемой при работе с электронным приложением. Я включил angular.min.js на странице index.html, и каждый раз, когда я приходил на эту страницу, количество раз, которое ранее использовалось для предупреждения, использовалось для получения double... например, 1,2,4,8,16 и т.д. Итак, после обновления 4/5 приложение используется для супер медленного. Решение, которое я нашел, это.. Вместо включения angular.min.js с тегом script используйте require ('./path/angular.min.js');

это будет загружать файл только один раз.

Согласно документации node

Кэширование #

Модули кэшируются после первого раза загрузки. Это означает (среди прочего), что каждый вызов, требуемый ('foo'), получит точно тот же объект, который был бы возвращен, если он разрешит один и тот же файл.

Несколько вызовов, требующих ('foo'), не могут вызывать выполнение кода модуля несколько раз. Это важная функция. С его помощью могут быть возвращены объекты с "частично выполненными", что позволяет загружать транзитивные зависимости, даже если они будут вызывать циклы.

Ответ 7

tools visual studio ---- просто комментируйте файл angularjs, как этот`

    <script src="~/Scripts/angular.min.js"></script>


</section>`