我正在尝试使用 Next.js 开发一个博客应用程序。在这个应用程序中,有一个组件接受一个降价文件并将其内容呈现为一个博客页面。
import ReactMarkdown from 'react-markdown';
import { NormalComponents, SpecialComponents } from 'react-markdown/lib/ast-to-react';
import { materialLight } from 'react-syntax-highlighter/dist/cjs/styles/prism';
import {Prism as SyntaxHighlighter} from 'react-syntax-highlighter';
import { FunctionComponent } from 'react';
interface IProps {
content: string;
}
const Markdown: FunctionComponent<IProps> = ({content}) => {
const components: Partial<NormalComponents & SpecialComponents> = {
code({node, inline, className, children, ...props}) {
const match = /language-(\w+)/.exec(className || '');
return (!inline && match) ? (
<SyntaxHighlighter style={materialLight} PreTag="div" language={match[1]} children={String(children).replace(/\n$/, '')} {...props} />
) : (
<code className={className ? className : ""} {...props}>
{children}
</code>
)
}
}
return <div className="markdown-body">
<ReactMarkdown components={components} children={content} />
</div>
}
export default Markdown;
但是,当我尝试构建应用程序时,它失败了,并引发了以下错误。
类型 '({ node, inline, className, children, ...props }: { [x: string]: any; node: any; inline: any; className: any; children: any; }) => Element' 是不可分配给类型 '(("code" | ((props: ClassAttributes & HTMLAttributes & ReactMarkdownProps) => ReactNode)) & (keyof IntrinsicElements | CodeComponent)) | 不明确的'。类型 '({ node, inline, className, children, ...props }: { [x: string]: any; node: any; inline: any; className: any; children: any; }) => Element' 是不可分配给类型“代码”和代码组件。类型 '({ node, inline, className, children, ...props }: { [x: string]: any; node: any; inline: any; className: any; children: any; }) => Element' 是不可分配给类型“代码”。
由于我对 Next.js 很陌生,我真的无法理解为什么会发生这种情况。在网上搜索了很多,但找不到满意的答案。我唯一能理解的是,这是关于一些缺失的类型,但除此之外无法取得任何进展。
如何避免此问题并构建我的 Next.js 应用程序?高度赞赏所有帮助。