我使用Angular 6开发了一个网站。默认情况下,Angular不太友好于SEO,因此为了解决这个问题,我实现了Angular-Universal或Angular SSR(服务器端渲染)的方式。我更新了代码,并比较了之前和现在的页面源代码,我可以看到我的应用程序位于
问题是,当我在本地系统上运行节点服务器时,查看源代码会显示已呈现的
更新:添加
<app-root>
和</app-root>
标签内,在此之前只有“loading…”。
我使用@angular/platform-browser
中的MetaService
和TitleService
来更新Facebook和Twitter的所需<meta>
标签以及<title>
标签。问题是,当我在本地系统上运行节点服务器时,查看源代码会显示已呈现的
meta
标签,但是当我在AWS VM上运行相同的节点服务器代码时,我没有得到已呈现的meta
标签,但其他应用程序代码可用。更新:添加
meta
标签的函数。updateMetaTags(egElement: Elements[]) {
this.url = 'https://example.com/eg/' + this.id;
const title = egElement[1].innerHTML;
this.tweetText = 'Check the latest blog on \"' + title + '\"';
this.meta.addTags([
{ property: 'og:url', content: this.url },
{ property: 'og:type', content: 'website' },
{ property: 'og:title', content: title },
{ property: 'og:description', content: 'Author: ' + egElement[2].innerHTML },
{ property: 'og:image', content: this.egElement[3].img }
]);
}
我在ngOnInit()中调用了这个函数。在我的本地机器上可以正确呈现,但在服务器上无法呈现。
egElement
和id
是从后端服务调用返回的,且meta
服务已被导入并注入到构造函数中。