在社交媒体上共享,URL不呈现任何元数据

时间:2018-06-21 12:28:53

标签: reactjs typescript visual-studio-2017 meta-tags social-media

我们在客户端渲染中使用react在.net核心中构建了一个项目(Web应用程序)。

我们已经使用react-helmet来动态分配元标签。

问题在于应用程序在浏览器中呈现的时间。浏览器仅在初始加载时获取静态HTML,其中不包含我们设置的动态元标记。但是,在检查时,您会在“元素”下获得这些元标记。

此外,如果我们使用这些URL在任何社交媒体(如WhatsApp或Facebook)上共享,则URL不会呈现应有的任何元数据。

试图寻找解决方案,我们遇到的最明显的答案是尝试服务器端渲染。我们知道了,但是当我们准备好将应用程序推出时,尝试在此关头尝试并不是解决方案。

我们遇到的其他内容是“反应快照”,“反应快照”,但没有运气 使用react-snap,它需要将React的版本升级到16+,这是我们做到的,但我想并不是所有的依赖项都已升级,出现错误提示“

  

水合物不是功能

(水合物与反应域有关)

使用react-snapshot,我们无法找到必需的类型定义,这是react .net核心正常运行所必需的

请为下一步可能的步骤提供指导(预付款等已付款的除外)?

主要目标:当我们在其中粘贴/共享URL时,社交应用程序应呈现元数据。

3 个答案:

答案 0 :(得分:4)

Prerender是唯一的解决方案。 我使用了一个称为“ prerender”的节点依赖性-> https://github.com/prerender/prerender

它可以启用发出http请求的Web服务器。将值分配给布尔值:window.prerenderReady = true;您的网站中的告诉您的服务器页面何时可以“拍照”,并在返回时返回HTML。您需要编写一个简单的脚本来解析所有站点url,并将这些html内容保存到文件中。将它们上传到您的服务器,并使用.htaccess或类似目标将爬虫外部-hit-facebook,twitterbot,googlebot等作为目标。以向其他用户代理显示预渲染的版本和“真实站点”。

对我有用。

答案 1 :(得分:2)

Open Graph的元标记必须存在于HTML中,当获取URL时,该元标记会发送回客户端。浏览器或漫游器不会等到应用程序呈现在客户端确定元标记是什么-它们只会查看最初加载的HTML。

如果您需要开放图元数据的内容是动态的(动态)(根据URL,设备,浏览器等显示不同的内容),则需要向其中添加react-meta-tags之类的内容您的服务器代码。

任何React meta标签库都没有类型定义,但是您可以添加自己的类型定义。可能有些棘手,但请查看official documentationthe templates they have provided入门。

如果不需要是动态的,则可以将标签添加到index.html中<head>标签的静态部分。

答案 2 :(得分:1)

我今天有同样的问题。我有两个需要此的React Web应用程序。这是我的解决方法:

  1. 将预览图像放入公用文件夹
  2. 仍在公用文件夹中,打开index.html,添加行<meta property="og:image" content="preview.png"/><meta property="og:image" content="%PUBLIC_URL%/preview.png"/>

转到https://www.linkedin.com/post-inspector/检查它是否有效。

我希望这会有所帮助!