2017-04-02 45 views
11

我工作的基础Angular2 web应用程序。我使用Angular CLI生成应用程序,然后构建应用程序。我已在AWS S3 & Cloudfront上托管网站。当我使用网站管理员的“Google抓取方式”工具时,它仅显示Loading...Angular2应用程序:抓取谷歌不会加载页面内容

enter image description here

是不是能的Googlebot抓取我的网站?

+0

您的网站是否仅限于前台?如果您没有后端服务文件,则可能会遇到此问题。 –

+0

我已经使用Angular2作为前端,并通过AWS cloudfront提供服务。后端是nodejs并托管在不同的子域上。 Angular2应用程序向nodejs应用程序发出API请求以呈现内容。 –

+0

您的前端是否由任何后端提供服务?或者它是一个光秃秃的index.html坐在你的域名? –

回答

10

也有类似的问题。我相信Google-Bot不支持现代JS。我只是通过激活看到angular.io推荐https://angular.io/docs/ts/latest/guide/browser-support.html并添加脚本头所有垫片:

<script src=https://cdnjs.cloudflare.com/ajax/libs/core-js/2.4.1/shim.min.js</script> 

如果你真的需要所有的人我不知道,但我需要为老年人IE支持反正。

如果这适用于所有Searchbots很清楚,如果你要支持他们,你可以尝试https://prerender.io/。不过他们也只是能够与垫片

希望这有助于呈现它。

+0

这最终是解决我的问题。我无法感谢你分享这个解决方案。我使用了你分享的cdn链接,但我很好奇你是如何“激活由angular.io推荐的所有垫片”的。你能解释一下吗? –

+1

所以我想这意味着cdn足以解决这个问题?那么在你的angular.io项目中应该有一个名为“polyfills.ts”的文件,其中所有来自https://angular.io/docs/ts/latest/guide/browser-support.html的垫片都被注释掉了。我基本上删除了所有与IE有关的类的评论。这将是所有core-js/es6/*,web-animations-js和classlist.js。希望这有助于 – Krosan

+0

我一直有同样的问题,谷歌不能够使用“抓取谷歌”呈现我的角4网站。无论我尝试过什么,它都返回空白。包括垫片在内的解决方案终于为我解决了这个问题。考虑将此作为接受的答案。 – brinch

2

由于您的前端没有被任何服务器端语言提供服务,我推荐使用Angular2-Universal担任初始加载一个静态的HTML网站。

您可以检出其quickstart指导,得到它的工作非常快。

+2

是不是应该的Googlebot呈现普通用户所看到的浏览器是什么? –

+0

@NileshG是的,一个普通的用户可以看到一个初始的加载屏幕。 –

+0

是的,我宁愿一个通用页面。然而,事实并非如此。看到我上面的答案。 – Krosan