使用 require.context 解析包含降价文件的路径

Resolving path that contains markdown files using require.context

我想使用 require.context

获取 posts 文件夹中所有降价文件的列表

这就是我在里面做的 blog.js:

const req = require.context('../posts', true, /\.md$/);
const posts = (ctx => {
    const keys = ctx.keys();
    const values = keys.map(ctx);
    const data = keys.map((key, index) => {
        // Create slug from filename
        const slug = key.replace(/^.*[\\/]/, '').split('.').slice(0, -1).join('.');
        const value = values[index];
        // Parse document
        const document = matter(value);
        return {
            document,
            slug
        };
    });
    return data;
})(req);

我的文件夹结构是:

-config.js
-pages
  -blog.js
-posts
  -post-1.md
  -post-2.md

我在使用它时遇到错误,显然 require.context 中不允许向上移动一个文件夹。 只能前进不能后退所以双点../是不允许的。

TypeError: expected input to be a string or buffer

如何访问帖子文件夹?

您可以使用 import 而不是 require。

从 './posts' 导入 {Post-1, Post-2};

require.context 允许上一个文件夹 ../

错误来自

const document = matter(value);