Разрешение пути, содержащего файлы уценки, с использованием require.context - PullRequest
0 голосов
/ 06 августа 2020

Я хотел получить список всех файлов уценки внутри папки posts, используя require.context

Вот как я это делаю внутри 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. Вы можете только go вперед, а не назад, поэтому двойная точка ../ не допускается.

TypeError: expected input to be a string or buffer

Как мне получить доступ к папке сообщений?

Ответы [ 2 ]

1 голос
/ 06 августа 2020

require.context позволяет перейти на одну папку вверх ../

Ошибка исходила от

const document = matter(value);

1 голос
/ 06 августа 2020

Вы можете использовать import вместо require.

import {Post-1, Post-2} from './posts';

...