我在尝试从 Next.js 项目中的 mdx 文件中获取元数据时遇到问题。
MDX 文件示例:
export const meta = {
title: 'title',
date: new Date('May 09, 2019'),
};
Content
export const getStaticProps = async context => {
const postFilenames = await recRead(process.cwd() + '/pages', ['*.tsx']);
const postMetadata = await Promise.all(
postFilenames.map(async p => {
const { meta } = require(p);
return meta;
}),
);
return {
props: {
postMetadata: postMetadata,
},
};
};
这是一个修改版本:https ://sarim.work/blog/dynamic-imports-mdx 。访问网站时出现错误:
找不到模块“/home/oliwier/webDev/oliwierwpodrozy/pages/balkany/1.mdx”。
顺便说一句recRead
,这是https://www.npmjs.com/package/recursive-readdir。
到底是怎么回事?在外面getStaticProps
我可以导入数据。
当我试图解决这个问题时,我发现了一些荒谬的事情。
// 1)console.log(postFilenamesToImport[0]);
// 2) const meta = await import('../pages/wielka-brytania/1.mdx');
// 3) const meta = await import(postFilenamesToImport[0]);
// console.log(meta.meta);
- 显示:../pages/wielka-brytania/1.mdx 这是一个字符串
- 这个有效
- 但是这个没有。显示错误:错误:找不到模块“../pages/wielka-brytania/1.mdx”
这不是一个常量问题。它是为测试而编写的,我知道同时使用 2) 和 3) 会导致问题。注释 1) 时会发生此错误。