Я пишу расширение Chrome (здесь) для моей библиотеки, в котором используется angular для его пользовательский интерфейс. Он отлично работает на страницах, которые не используют angular, но это вызывает проблемы со страницами, которые имеют angular. Например, на странице angular docs:
Uncaught Error: [$injector:modulerr] Failed to instantiate module docsApp due to:
Error: [$injector:nomod] Module 'docsApp' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
http://errors.angularjs.org/1.2.7/$injector/nomod?p0=docsApp
at chrome-extension://cfgbockhpgdlmcdlcbfmflckllmdiljo/angular.js:78:14
at chrome-extension://cfgbockhpgdlmcdlcbfmflckllmdiljo/angular.js:1528:19
at ensure (chrome-extension://cfgbockhpgdlmcdlcbfmflckllmdiljo/angular.js:1453:40)
at module (chrome-extension://cfgbockhpgdlmcdlcbfmflckllmdiljo/angular.js:1526:16)
at chrome-extension://cfgbockhpgdlmcdlcbfmflckllmdiljo/angular.js:3616:24
at Array.forEach (native)
at forEach (chrome-extension://cfgbockhpgdlmcdlcbfmflckllmdiljo/angular.js:302:13)
at loadModules (chrome-extension://cfgbockhpgdlmcdlcbfmflckllmdiljo/angular.js:3610:7)
at createInjector (chrome-extension://cfgbockhpgdlmcdlcbfmflckllmdiljo/angular.js:3550:13)
at doBootstrap (chrome-extension://cfgbockhpgdlmcdlcbfmflckllmdiljo/angular.js:1298:22)
http://errors.angularjs.org/1.2.7/$injector/modulerr?p0=docsApp&p1=Error%3A…xtension%3A%2F%2Fcfgbockhpgdlmcdlcbfmflckllmdiljo%2Fangular.js%3A1298%3A22) angular.js:78
Странно то, что кажется, что мое расширение действительно использует angular или нет. Все, что мне нужно воспроизвести, это включить angular в мой manifest.json как content_script
, и эта ошибка будет выбрана. Любые идеи о том, как я мог бы сделать эту работу, не испортив сайт angular, будут очень благодарны.
Как я уже сказал, неважно, действительно ли я использую angular или нет, но это все, что я делаю, чтобы использовать его:
makeWishForAnchors(); // This just loads the global genie object. I don't believe it related.
var lamp = '<div class="genie-extension"><div ux-lamp lamp-visible="genieVisible" rub-class="visible" local-storage="true"></div></div>';
$('body').append(lamp);
angular.module('genie-extension', ['uxGenie']);
angular.bootstrap($('.genie-extension')[0], ['genie-extension']);
Спасибо!