我正努力用gatsby-plugin-feed@3.4.0 & gatsby@3.4.0 (最新的)来解决我的gatsby-plugin-feed@3.4.0和gatsby@3.4.0的最新突破变化。
这是我的配置:(**gatsby-config.js**)
{
resolve: 'gatsby-plugin-feed',
options: {
query: `
{
site {
siteMetadata {
title
author
description
bizEmail
authorEmail
siteUrl
site_url: siteUrl
}
}
}
`,
setup: ({ query: { site } }, options) => ({
...options,
title: 'Menefex WMB: RSS Feeds',
description: site.siteMetadata.description,
site_url: site.siteMetadata.siteUrl,
feed_url: `${site.siteMetadata.siteUrl}/rss.xml`,
image_url: 'https://i.postimg.cc/JnqZPb3f/Gx-FAVICON.png',
webMaster: `${site.siteMetadata.bizEmail} (${site.siteMetadata.title})`,
managingEditor: `${site.siteMetadata.authorEmail} (${site.siteMetadata.author})`,
copyright: `© 2019 - ${new Date().getFullYear()} ${
site.siteMetadata.title
}, Alle rechten voorbehouden.`,
language: 'nl',
generator: 'GatsbyJS',
ttl: '60',
custom_namespaces: {
webfeeds: 'http://webfeeds.org/rss/1.0',
},
custom_elements: [
{
'webfeeds:cover': {
_attr: {
image: 'https://i.postimg.cc/WbsmfwKc/Gx-NEWLOGO.png',
},
},
},
{ 'webfeeds:icon': 'https://i.postimg.cc/JnqZPb3f/Gx-FAVICON.png' },
{ 'webfeeds:logo': 'https://i.postimg.cc/JnqZPb3f/Gx-FAVICON.png' },
{ 'webfeeds:accentColor': 'FFCC00' },
{
'webfeeds:related': {
_attr: {
layout: 'card',
target: 'browser',
},
},
},
],
}),
feeds: [
{
serialize: ({ query: { site, allContentfulBlogPost } }) =>
allContentfulBlogPost.edges.map((edge) => ({
title: edge.node.title,
author: site.siteMetadata.authorEmail,
description: edge.node.subtitle,
date: edge.node.updatedAt,
url: `${site.siteMetadata.siteUrl}/blog/${edge.node.slug}`,
guid: edge.node.updatedAt,
enclosure: {
url: `https:${edge.node.image.file.url}`,
},
custom_elements: [
{
'webfeeds:featuredImage': `https:${edge.node.image.file.url}`,
},
{
'content:encoded': JSON.stringify(edge.node.body),
},
],
})),
query: `
{
allContentfulBlogPost(sort: { fields: publishedDate, order: DESC }) {
edges {
node {
title
subtitle
slug
updatedAt
body {
raw
references {
... on ContentfulAsset {
contentful_id
__typename
fixed(width: 1600) {
width
height
src
srcSet
}
}
}
}
image {
file {
url
}
}
}
}
}
}
`,
output: '/rss.xml',
title: 'Menefex WMB: RSS Feeds',
// optional configuration to insert feed reference in pages:
// if `string` is used, it will be used to create RegExp and then test if pathname of
// current page satisfied this regular expression;
// if not provided or `undefined`, all pages will have feed reference inserted
match: '^/blog/',
// optional configuration to specify external rss feed, such as feedburner
link: 'https://feeds.feedburner.com/GimmixWMB',
},
],
},
},通过上面的代码,我得到了下面的代码(焦点:content:encoded). )我认为这不足以正确地看待我的rssfeeds。如何将原始数据解析为html元素?

在将Gatsby项目迁移到v3之前,我以前经常在工作中使用这段代码:它现在抱怨使用了一个GrapQhl函数&在GrapQhl操场上无法访问my rssHtml。
我的gatsby-node.js
const { documentToHtmlString } = require('@contentful/rich-text-html-renderer');
exports.createResolvers = ({ createResolvers }) => {
createResolvers({
contentfulBlogPostBodyRichTextNode: {
rssHtml: {
type: 'String',
resolve: (source) => documentToHtmlString(source),
},
},
});
};,我在这里漏掉了什么?,谢谢。
发布于 2021-06-01 06:24:59
从屏幕截图来看,edge.node.body有raw字段,我认为这就是您想要解析的。尝试将该值传递给documentToHtmlString调用
resolve: (source) => documentToHtmlString(JSON.parse(source.raw)),在RSS提要配置中传递新的解析值。
'content:encoded': edge.node.body.rssHtml,您最好在@contentful/rich-text-html-renderer文件中直接使用gatsby-config.js,避免添加自定义解析器。
const { documentToHtmlString } = require('@contentful/rich-text-html-renderer');
...
'content:encoded': documentToHtmlString(edge.node.body.raw),
...https://stackoverflow.com/questions/67346839
复制相似问题