使用gray-matter时遇ENOENT错误:无法找到./test.md文件
问题原因及解决办法
出现ENOENT错误的核心原因是相对路径解析不符合预期——Node.js(或你使用的框架,比如Next.js)执行page.js时的工作目录,不一定是你看到的page.js所在目录,导致./test.md无法定位到目标文件。
解决办法:
- 改用绝对路径:借助Node.js的路径模块生成精准的绝对路径,确保能找到
test.md:- 若项目用CommonJS模块(依赖
require导入):const path = require('path'); const matter = require('gray-matter'); // 用__dirname获取当前文件所在目录,再拼接test.md路径 const testMdPath = path.join(__dirname, './test.md'); const mdContent = matter.read(testMdPath); - 若项目用ES模块(依赖
import导入,比如Next.js 13+):import path from 'path'; import { fileURLToPath } from 'url'; import matter from 'gray-matter'; // 先获取当前文件的绝对路径,再推导所在目录 const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const testMdPath = path.join(__dirname, 'test.md'); const mdContent = matter.read(testMdPath);
- 若项目用CommonJS模块(依赖
- 检查文件状态:确认
test.md和page.js在同一目录下,文件名拼写完全一致(注意Linux/macOS系统区分文件名大小写,Windows不区分),没有被误移动到其他文件夹。
内容的提问来源于stack exchange,提问作者Ramy Hazem
相关产品推荐
相关产品推荐

