2

我使用 NextJS 的静态渲染功能来生成我网站的静态版本,因此我想确保在页面的第一次渲染时提供正确渲染所需的所有数据。

我有许多博客文章,我已将它们作为 .md 文件存储在 /static 中,并希望在以下页面中访问它们:

import * as fs from "fs";
...

export default class extends React.Component<IProps, any> {

  static async getInitialProps (props: IServerProps) {
    const post = (await getDb()).posts.find(p => p.id == props.query.id);
    const markdown = fs.readFileSync(`/static/posts/${post.markdownFileName}`);
    return { post, markdown }
  }
...

但是如果尝试运行上面我得到以下错误:

This dependency was not found: * fs

所以我不确定我应该如何在服务器上访问这些静态资源..

4

1 回答 1

1

不幸的是 Next.js 不允许使用 webpack 加载器来处理服务器上的不同文件类型(尽管它们用于构建客户端包),但可以使用 Babel 插件。可以在这里找到一个这样的 Markdown 内容插件:https ://www.npmjs.com/package/babel-plugin-markdown

配置后.babelrc

{
  "plugins": ["markdown"]
}

可以markdown.require()用来拉入.md内容:

const html = markdown.require('./foo.md')

更多选项在链接中描述!

于 2017-12-08T18:31:36.117 回答