You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js中glob包sync函数无法正常工作求助

解决Next.js中glob sync无法匹配.md文件的问题

可能的原因及修复方案

1. 路径分隔符不兼容

Windows系统下路径使用反斜杠\,但glob默认以正斜杠/作为路径分隔符,直接拼接的路径会导致匹配失败。可以将路径转为glob兼容格式:

const mdxInDir = sync(`${blogDirPath.replace(/\\/g, '/')}/*.md`);

2. 确认glob包已正确安装

如果未安装glob,先执行安装命令:

npm install glob
# 或
yarn add glob

3. 使用cwd参数简化匹配逻辑

避免路径拼接的格式问题,直接通过cwd参数指定扫描目录,匹配模式更简洁:

const mdxInDir = sync('*.md', { cwd: blogDirPath });

4. 验证目标目录路径正确性

在getStaticProps中打印路径,确认其指向包含.md文件的目录:

console.log('目标目录路径:', blogDirPath);

注意process.cwd()在Next.js中指向项目根目录,确保blogData目录确实在根目录下,而非pages等子目录内。

5. 排查文件忽略规则

如果blogData目录被.gitignore或Next.js的忽略配置排除,会导致glob无法扫描到文件,可检查相关配置文件。

修复后的示例代码

import path from 'path'
import { sync } from 'glob'

const Index=({mdxInDir})=>{
  console.log(mdxInDir)
  return <></>
}

export default Index

export async function getStaticProps(){
  const blogDirPath = path.join(process.cwd(), 'blogData')
  const mdxInDir = sync('*.md', { cwd: blogDirPath })

  console.log('目标目录:', blogDirPath)
  console.log('匹配到的文件:', mdxInDir)

  return {
    props : {
      mdxInDir,
      blogDirPath
    }
  }
}

内容的提问来源于stack exchange,提问作者Silenx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 00:01:03