2017-03-23 2 views
2

Le site fonctionne sans aucun problème de production (fichiers minifiés et concaténés), mais lorsqu'une page est envoyée à prerender.js ou à phantom.js pour l'instantané génération, j'obtiens une erreur:Angular ne peut pas charger le module pour prerender.js/phantom.js uniquement pour la production

Uncaught Error: [$injector:modulerr] Failed to instantiate module myApp to: Error: [$injector:modulerr] Failed to instantiate module myApp due to: Error: [$injector:nomod] Module 'myApp' 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.

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 in m
https://www.mydomain.io/app/vendor.7240ef6a.js:4 in db
https://www.mydomain.io/app/vendor.7240ef6a.js:3 in g
https://www.mydomain.io/app/vendor.7240ef6a.js:3 in 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 in j
https://www.mydomain.io/app/vendor.7240ef6a.js:2 in fireWith
https://www.mydomain.io/app/vendor.7240ef6a.js:2 in ready
https://www.mydomain.io/app/vendor.7240ef6a.js:1 in g

Je dois fichiers: vendor.js et app.js. J'ai exactement la même structure sur mon autre projet (juste les fichiers sont différents) et ça marche bien avec le même serveur prerender.js.

J'ai réussi à suivre le problème jusqu'à jquery.js. Mais je suis coincé à ce moment-là. On dirait que prerender/phanatom.js charge les fichiers de manière différente. A également utilisé window.prerenderReady = true/false en vain.

J'utilise generator-angular-fullstack avec angulaire v1.5.8 et v2.2.4 jQuery

En index.html jquery est inclus avant angulaire. Je me demande s'il existe des moyens d'obtenir des informations plus détaillées sur les causes du problème.

+0

S'agit-il simplement de fantômes js ou d'autres navigateurs? Cela ressemble à un problème avec l'injection de dépendance. Essayez d'ajouter 'ng-strict-di' sur l'élément avec' ng-app' par exemple '' body ng-app = "monApp" ng-strict-di> ' – maurycy

+1

Avez-vous réussi à trouver une solution pour cela? J'ai le même problème. –

+0

Même problème ici. Comment l'avez-vous réparé? Merci – Hendrik

Répondre

0

J'ai vu cela se produire avant si vos fichiers sont chargés dans le <body>. Le chargement de scripts dans le <body> les fait charger de manière asynchrone lorsqu'il est possible que les scripts se chargent dans l'ordre incorrect. La plupart des nouveaux navigateurs gèrent bien, mais PhantomJS (v2.1.1) va exécuter le script dès qu'il est chargé, peu importe la commande. Je suggère d'essayer de charger ces scripts dans le <head>.

+0

J'ai essayé cette solution de contournement, mais cela n'a pas fonctionné. As-tu d'autres idées? –

+1

Pouvez-vous nous envoyer un courriel à [email protected] avec votre site Web? Nous pouvons tester votre site et déterminer quel pourrait être le problème –