【发布时间】:2022-01-17 14:27:46
【问题描述】:
[已解决]
我在 NextJS 中创建了一个dynamic API 路由,如果给定一个filename,服务器将读取content 目录下的文件(.md 或.txt 文件),将其转换为字符串并返回它。 API 在local 环境中按预期工作,但是在Vercel 中部署的网站不适用于此 API 路由。
对于存在于content 目录中的文件,该API 路由返回500 internal server error。
控制台错误是:
Failed to load resource: the server responded with a status of 500 ()
检查路线的vercel日志,显示如下:
ERROR Error: ENOENT: no such file or directory, open 'content/phase1_section1.md'
我认为path.join() 不适合我。它不是在内容部分前面添加应用程序的实际域名。我该如何解决这个问题?
还有,这是code
import { readFileSync } from 'fs';
import path from "path";
export default function courseHandler({ query: { slug } }, res) {
const fullPath = path.join('./content/', slug);
const content = readFileSync(fullPath, 'utf8');
if (content) {
res.status(200).json({
content: content
});
} else {
res.status(404).json({ message: `Course with slug: ${slug} not found.` })
}
}
【问题讨论】:
-
500 错误可以是任何东西。您可以查看 Vercel 中的日志吗?
-
是的,刚刚检查过。我认为这条路不适合我。 ERROR 错误: ENOENT: no such file or directory, open 'content/phase1_section1.md' 它没有在内容部分前面添加应用程序的实际域名。我该如何解决这个问题?
-
你能在你的API运行的环境中找到
content/phase1_section1.md吗? -
感谢您的评论。我解决了这个问题。问题出在文件路径上。
标签: reactjs next.js fetch vercel