我试图在构建时加载一个Markdown文件。 我设置了一个使用Typescript的create-react-app,并使用material_ui博客主题。
import ReactMarkdown from 'markdown-to-jsx';
import post1 from './blog-post.1.md';
export default function Main(props: MainProps) {
const classes = useStyles();
const { posts, title } = props;
return (
<Grid item xs={12} md={8}>
<Typography variant="h6" gutterBottom>
{title}
</Typography>
<Divider />
{posts.map((post) => (
<Markdown className={classes.markdown} key={post.substring(0, 40)}>
{post}
</Markdown>
))}
</Grid>
);
}
如果一个帖子被指定为Markdown格式,它将会正确地呈现:const post = '#示例博客文章####2020年4月1日由[Olivier](/)发布'
问题在于.md文件没有加载到变量中。
当运行npm start
时,HTML 显示:/static/media/blog-post.1.09e7833f.md
。这是什么原因,文件路径中的 09e7833f 是什么意思?
我希望在构建时加载文件,这样就可以更快地在像 Netlify 这样的地方提供服务了。我不想使用类似这个答案建议的异步获取。
我想我需要创建一个 webpack loader 吗?问题是 create-react-app 在 node_modules
中有一个webpack.config.js
,这意味着在新构建期间自定义内容将被覆盖。如果我无法进行配置,则我认为使用raw-loader 没有帮助。
我也尝试过 import post1 from 'raw-loader!./blog-post.1.md';
,如此处建议,但 TypeScript 不知道该怎么做。
任何建议都将有所帮助。