Estoy trabajando en una aplicación web basada en Angular2. Usé Angular CLI para generar la aplicación y luego construirla para prod. Tengo un sitio web alojado en AWS S3 y Cloudfront. Cuando utilizo la herramienta 'Buscar como Google' del webmaster, solo muestra Loading... .
¿Googlebot no puede rastrear mi sitio web?
tenía un problema similar. Creo que Google-Bot no es compatible con JS moderno. Simplemente activé todas las correcciones recomendadas por angular.io, consulte https://angular.io/docs/ts/latest/guide/browser-support.html y las agregué en el encabezado del script:
<script src="https://cdnjs.cloudflare.com/ajax/libs/core-js/2.4.1/shim.min.js"> </script>Si realmente los necesita a todos, no estoy seguro, pero de todos modos necesito soporte para IE más antiguo.
No está muy claro si esto funciona para todos los Searchbots, si tiene que apoyarlos, puede probar https://prerender.io/ . Sin embargo, también pueden renderizarlo con las calzas.
Espero que esto ayude.
Primero se habló de esto en NG-Conf 2018 Abr. Para las diapositivas, haga clic aquí .
Mirando el código fuente de Angular.io , así es como los muchachos angulares hacen esto de acuerdo con las diapositivas.
<script> if (window.document.documentMode) { // polyfill IE11 in a blocking way var s = document.createElement('script'); s.src = 'generated/ie-polyfills.min.js'; document.head.appendChild(s); } else if (!Object.assign) { // polyfill other non-evergreen browsers in a blocking way var polyfillUrl = "https://cdn.polyfill.io/v2/polyfill.min.js?features=default,Array.prototype.find&flags=gated&unknown=polyfill"; // send a blocking XHR to fetch the polyfill // then append it to the document so that its eval-ed synchronously // this is required because the method used for IE is not reliable with other non-evergreen browsers var xhr = new XMLHttpRequest(); xhr.addEventListener("load", function() { var s = document.createElement('script'); s.type = 'text/javascript'; var code = this.responseText; s.appendChild(document.createTextNode(code)); document.head.appendChild(s); }); xhr.open("GET", polyfillUrl, false); xhr.send(); } </script>Agregue el script anterior en la sección HEAD de su archivo de índice.
Vale la pena mencionar que si elige la respuesta de simplemente agregar un CDN, lo más probable es que esté cargando un script que no es necesario para la mayoría de los navegadores modernos a esos navegadores también y debe evitarse.
Dado que su interfaz no está siendo atendida por ningún idioma del lado del servidor, recomendaría usar Angular2-Universal para servir un sitio HTML estático en la carga inicial.
Puede consultar su guía de inicio rápido y hacer que funcione bastante rápido.