【发布时间】:2020-06-23 09:28:34
【问题描述】:
我在nuxt.config.js 中有{src: '~/plugins/vue-meta.js', ssr: true},
在index.vue:
async asyncData({ params, store }) {
await store.dispatch("articles/getArticle", params.slug);
return {
article: store.getters["articles/getArticle"]
};
},
metaInfo() {
return {
title: this.article.title,
meta: [
{
vmid: "description",
hid: "description",
name: "description",
content: this.article.meta_tag_content
},
{
property: "og:title",
hid: "og-title",
vmid: "og-title",
content: this.article.title
},
{
property: "og:description",
hid: "og-description",
vmid: "og-description",
content: this.article.meta_tag_content
},
{
property: "og:image",
hid: "og-image",
vmid: "og-image",
content: this.article.small_image_url
},
{
property: "og:type",
hid: "og-type",
vmid: "og-type",
content: "article"
},
{
property: "og:url",
hid: "og-url",
vmid: "og-url",
content: location.origin
},
{
name: "twitter:card",
hid: "twitter-card",
vmid: "twitter-card",
content: this.article.meta_tag_content
}
]
};
},
但这些都不会呈现服务器端 - 它只呈现客户端,这意味着 Facebook 不会读取 OG 元元素。
是否需要为 Nuxt 设置其他内容才能呈现此服务器端?
模式在 nuxt.config.js 中设置为“通用”。不管我是使用 generate、run dev 还是 run start,结果都是一样的。
【问题讨论】:
-
嗯,我刚刚使用一个新的 nuxtjs 创建的项目测试了你的描述,它对我有用吗?我做了什么:创建'~/plugins/vue-meta.js',添加vue-meta的“安装”部分中指定的代码,
yarn add vue-meta,按照你说的将插件添加到nuxt.config.js,然后创建一个带有静态data()函数和您的metaInfo()的简单 index.vue。然后它确实成功地渲染了元信息服务器端。 -
但也请参阅我的回答,您甚至不需要手动添加
vue-meta作为默认情况下 nuxt 的一部分。