Angular не может загрузить модуль для prerender.js/phantom.js только для pproduction
Веб-сайт работает без каких-либо проблем в процессе производства (файлы сокращены и объединены), но когда страница отправляется в prerender.js или phantom.js для создания снимка, я получаю сообщение об ошибке:
Uncaught Ошибка: [$injector:modulerr] Не удалось создать экземпляр модуля myApp: Ошибка: [$injector:modulerr] Не удалось создать экземпляр модуля myApp из-за: Ошибка: [$injector:nomod] Модуль "myApp" недоступен! Вы либо неправильно написали имя модуля, либо забыли загрузить его. При регистрации модуля убедитесь, что вы указали зависимости в качестве второго аргумента.
https://www.mydomain.io/app/vendor.7240ef6a.js:4
https://www.mydomain.io/app/vendor.7240ef6a.js:3 in d
https://www.mydomain.io/app/vendor.7240ef6a.js:4 в м
https://www.mydomain.io/app/vendor.7240ef6a.js:4 в дБ
https://www.mydomain.io/app/vendor.7240ef6a.js:3 в г
https://www.mydomain.io/app/vendor.7240ef6a.js:3 в ea
https://www.mydomain.io/app/vendor.7240ef6a.js:3 in da
https://www.mydomain.io/app/vendor.7240ef6a.js:8
https://www.mydomain.io/app/vendor.7240ef6a.js:2 в j
https://www.mydomain.io/app/vendor.7240ef6a.js:2 в fireWith
https://www.mydomain.io/app/vendor.7240ef6a.js:2 в готовности
https://www.mydomain.io/app/vendor.7240ef6a.js:1 в г
У меня есть файлы: vendor.js и app.js. У меня точно такая же структура в моем другом проекте (только файлы разные), и он хорошо работает с тем же сервером prerender.js.
Мне удалось отследить проблему до jquery.js. Но я застрял в этой точке. Похоже, prerender / phanatom.js загружает файлы по-другому. А также используется window.prerenderReady = true/false
но безрезультатно.
Я использую генератор- Angular -FullStack с Angular v1.5.8 и jQuery v2.2.4
В index.html jquery включен перед угловым. Интересно, есть ли способы получить более подробную информацию о причинах проблемы?
1 ответ
Я видел это раньше, если ваши файлы загружаются в <body>
, Загрузка скриптов в <body>
заставляет их загружаться асинхронно, где возможно, что скрипты загружаются в неправильном порядке. Большинство новых браузеров справляются с этим хорошо, но PhantomJS (v2.1.1) выполнит скрипт сразу после его загрузки, независимо от порядка.
Я бы посоветовал попытаться загрузить эти скрипты в <head>
,