zone.js: 25 Неперехваченная ошибка: зона уже загружена

мое приложение angular загружается по нажатию кнопки. Когда кнопка нажата во второй раз, это дает мне Zone already loaded ошибку, потому что содержимое zone.js загружается при первой загрузке angular2.

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

Когда я удаляю (ответил ниже) зону delete window['zone'] и пытаюсь перезагрузить ее снова, отображается zone.js:984 Uncaught ReferenceError: Zone is not defined


person Aniruddha Das    schedule 20.10.2016    source источник
comment
Добавьте код, демонстрирующий вашу проблему   -  person yurzui    schedule 20.10.2016
comment
Я использую angular-cli для создания своего проекта. как только он построит, он создаст только 2 файла, включая zone.js, и я загружаю свое угловое приложение одним нажатием кнопки, когда кнопка нажимается второй раз, он показывает ошибку.   -  person Aniruddha Das    schedule 20.10.2016
comment
Дело в том, что я могу отредактировать созданный файл с помощью angular-cli и проверить, загружена ли зона или нет, но как я могу сделать это автоматически из angular-cli или другим способом.   -  person Aniruddha Das    schedule 20.10.2016
comment
@yurzui, код: var Zone $ 1 = (function (global) {if (global.Zone) {throw new Error ('Зона уже загружена.');} Это происходит из сгенерированного кода сборки angular-cli   -  person Aniruddha Das    schedule 20.10.2016
comment
Эта ошибка возникает, когда вы пытаетесь включить скрипт zone.js во второй раз.   -  person yurzui    schedule 20.10.2016
comment
Возможно, вы включаете другой скрипт, у которого есть zonejs в качестве зависимости   -  person yurzui    schedule 20.10.2016
comment
@yurzui да я знаю. На самом деле, как я уже упоминал, я не могу избежать или запретить пользователю дважды загружать мою библиотеку, поскольку мое приложение angular переходит в другое приложение при нажатии кнопки.   -  person Aniruddha Das    schedule 20.10.2016
comment
Попробуй вызвать delete global['Zone']; перед повторной загрузкой zonejs   -  person yurzui    schedule 20.10.2016
comment
Когда я пытаюсь удалить глобальную ['зону']; Я получаю Uncaught ReferenceError: global is not defined. Я строю свой угловой проект с помощью angular-cli   -  person Aniruddha Das    schedule 24.10.2016
comment
@yurzui, удалить window.Zone может удалить его, но когда загружается другой модуль angular2, он говорит, что зона не определена. У меня есть способ решить эту проблему с зоной в angular2   -  person Aniruddha Das    schedule 25.10.2016


Ответы (1)


вы можете попробовать что-то вроде этого ...

$(function (){
		function removejscssfile(filename, filetype){
		   var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none" //determine element type to create nodelist from
		   var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none" //determine corresponding attribute to test for
		   var allsuspects=document.getElementsByTagName(targetelement)
		   for (var i=allsuspects.length; i>=0; i--){ //search backwards within nodelist for matching elements to remove
		   if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1)
		       allsuspects[i].parentNode.removeChild(allsuspects[i]) //remove element by calling parentNode.removeChild()
		   }
		}
	var jsCustomerTag = $("head").children("#jsShimTag");
    if (jsCustomerTag.length == 0) {
    	jsCustomerTag = document.createElement('script');
    	jsCustomerTag.setAttribute("type", "text/javascript");
    	jsCustomerTag.setAttribute("src", " <your js file> ");
    	jsCustomerTag.id = "jsShimTag";
        document.getElementsByTagName("head")[0].appendChild(jsCustomerTag);
    }

   jsCustomerTag = null;
});

person Brijesh Singh    schedule 25.10.2016
comment
это один из способов удаления скриптов из браузера и его повторной загрузки. позволь мне попробовать - person Aniruddha Das; 25.10.2016