Next.js:如何从 getStaticProps 中获取静态资产

Posted

技术标签:

【中文标题】Next.js:如何从 getStaticProps 中获取静态资产【英文标题】:Next.js: How to get static assets from within getStaticProps 【发布时间】:2021-04-27 19:42:35 【问题描述】:

我正在使用 Netlify CMS。我想将轮播的所有幻灯片导入到我的组件中。我制作了一个名为滑块的集合并添加了一些幻灯片。这在public/content/slider/ 中创建了两个降价文件(每张幻灯片一个)。我想将它们全部导入一个可迭代对象中,以便构建轮播。

因为我为markdown文件设置了webpack loader,所以我可以导入单个markdown文件没有问题,像这样:

import post from '../public/content/posts/[post name].md

但是当我尝试使用require.context、require-context或导入fs时,就不行了。所以我决定尝试从getStaticProps 中要求这些库。但是getStaticProps 中的__dirname/,是我计算机文件系统的根目录。

所有getStaticProps 示例都使用数据获取。我缺少一些信息。如何导入/slides/文件夹中的所有markdown文件?

【问题讨论】:

【参考方案1】:

这是 known issue in Next.js,__dirname 错误地解析为 / - 您应该改用 process.cwd()

来自 Next.js Reading files 文档:

文件可以直接从getStaticProps中的文件系统读取。

为此,您必须获取文件的完整路径。

由于 Next.js 将您的代码编译到单独的目录中,因此您不能 使用__dirname 作为返回的路径将不同于 页面目录。

相反,您可以使用process.cwd(),它会为您提供所在的目录 Next.js 正在执行中。

【讨论】:

以上是关于Next.js:如何从 getStaticProps 中获取静态资产的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Next.js 中调试 getStaticProps(和 getStaticPaths)

如何使 Next.js getStaticProps 与打字稿一起使用

Next.js:如何将 getStaticProps/getStaticPaths 用于具有多个域/主机名的站点?

在 getStaticProps 函数中序列化 Next.js 时出错?

如何从 getStaticProps 返回重定向而不从 TypeScript 出错?

使用 Next.js 中的 getStaticProps 对公用文件夹中的静态图像进行编码