I'm currently in process of moving my blog from gridsome to nuxt most of it has been fairly straightforward, however generating a feed so I can cross post on here is proving more difficult.
I've used the example set out in the integration docs for nuxt/content module added what I need to I think but it throws an error when I try and localhost:3000/feed.xml
so not entirely sure what I am doing wrong. This is what I see in terminal:
✖ Nuxt Fatal Error Error while executing feed creation function
and this isnuxt.config.js:
const fs = require('fs').promises; const path = require('path'); let posts = []; const constructFeedItem = (post, dir, hostname) => { const url = `${hostname}/${dir}/${post.slug}`; return { title: post.title, id: url, link: url, description: post.description, content: post.bodyPlainText } } const create = async (feed, args) => { const [filePath, ext] = args; const hostname = process.NODE_ENV === 'production' ? 'https://my-production-domain.com' : 'http://localhost:3000'; feed.options = { title: "My Web Dev Blog", description: "Documenting my web dev learnings", link: `${hostname}/feed.${ext}` } const { $content } = require('@nuxt/content') if (posts === null || posts.length === 0) posts = await $content(filePath).fetch(); for (const post of posts) { const feedItem = await constructFeedItem(post, filePath, hostname); feed.addItem(feedItem); } return feed; } export default { // Target (https://go.nuxtjs.dev/config-target) target: 'static', // Global page headers (https://go.nuxtjs.dev/config-head) head: { title: 'Web Developer Portfolio and Blog', meta: [ { charset: 'utf-8' }, { name: 'viewport', content: 'width=device-width, initial-scale=1' }, { hid: 'description', name: 'description', content: '' } ], link: [ { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' } ] }, // Global CSS (https://go.nuxtjs.dev/config-css) css: [ '@fortawesome/fontawesome-svg-core/styles.css' ], // Plugins to run before rendering page (https://go.nuxtjs.dev/config-plugins) plugins: [ '~/plugins/fontawesome.js' ], // Modules for dev and build (recommended) (https://go.nuxtjs.dev/config-modules) buildModules: [ // https://go.nuxtjs.dev/tailwindcss '@nuxtjs/tailwindcss', ], // Modules (https://go.nuxtjs.dev/config-modules) modules: [ // https://go.nuxtjs.dev/content '@nuxt/content', '@nuxtjs/feed' ], feed: [ { path: '/feed.xml', create, cacheTime: 1000 * 60 * 15, type: 'rss2', data: [ 'blog', 'xml' ] }, ], hooks: { 'content:file:beforeInsert': (document) => { if (document.extension === '.md') { document.bodyPlainText = document.text; } }, },
Anyone have some experience with this? The example in the feed module docs on github uses axios which I don't want/need as I can use @nuxt/content. What am I doing wrong?
Top comments (0)