我想写我的博客帖子与markdown编辑器,我的问题是当我发布我的帖子编辑与markdown然后代码块,列表项,表等不能正常工作,另一部分是工作文件,如图像,链接,文本粗体...
看起来像这样:

输出为:

我尝试过用这种方式编写代码:
posts.js文件
import fs from 'fs'
import path from 'path'
import matter from 'gray-matter'
import { sortByDate } from '@/utils/index'
const files = fs.readdirSync(path.join('posts'))
export function getPosts() {
const posts = files.map((filename) => {
const slug = filename.replace('.md', '')
const markdownWithMeta = fs.readFileSync(
path.join('posts', filename),
'utf-8'
)
const { data: frontmatter } = matter(markdownWithMeta)
return {
slug,
frontmatter,
}
})
return posts.sort(sortByDate)
}[slug.js]文件:
import fs from 'fs'
import path from 'path'
import matter from 'gray-matter'
import marked from 'marked'
import Link from 'next/link'
import Layout from '@/components/Layout'
import CategoryLabel from '@/components/CategoryLabel'
export default function PostPage({
frontmatter: { title, category, date, cover_image, author, author_image },
content,
slug,
}) {
return (
<Layout title={title}>
<Link href='/blog'>Go Back</Link>
<div className='w-full px-10 py-6 bg-white rounded-lg shadow-md mt-6 md:grid-cols-6'>
<div className='flex justify-between items-center mt-4'>
<h1 className='text-5xl mb-7'>{title}</h1>
<CategoryLabel>{category}</CategoryLabel>
</div>
<img src={cover_image} alt='' className='w-full rounded' />
<div className='flex justify-between items-center bg-gray-100 p-2 my-8'>
<div className='flex items-center'>
<img
src={author_image}
alt=''
className='mx-4 w-10 h-10 object-cover rounded-full hidden sm:block'
/>
<h4>{author}</h4>
</div>
<div className='mr-4'>{date}</div>
</div>
<div className='blog-text mt-2'>
<div dangerouslySetInnerHTML={{ __html: marked(content) }}></div>
</div>
</div>
</Layout>
)
}
export async function getStaticPaths() {
const files = fs.readdirSync(path.join('posts'))
const paths = files.map((filename) => ({
params: {
slug: filename.replace('.md', ''),
},
}))
return {
paths,
fallback: false,
}
}
export async function getStaticProps({ params: { slug } }) {
const markdownWithMeta = fs.readFileSync(
path.join('posts', slug + '.md'),
'utf-8'
)
const { data: frontmatter, content } = matter(markdownWithMeta)
return {
props: {
frontmatter,
content,
slug,
},
}
}有什么建议请提出来。
发布于 2021-05-27 13:54:51
请参阅:https://nextjs.org/blog/markdown
你需要设置:https://github.com/tailwindlabs/tailwindcss-typography
然后将prose类添加到包含标记的div中
<div className='blog-text prose mt-2'>
<div dangerouslySetInnerHTML={{ __html: marked(content) }}></div>
</div>https://stackoverflow.com/questions/67715076
复制相似问题