Nextjs API 在本地环境有效,但在生产环境中无效
Nextjs API works in local environment but not in production environment
[已解决]
我在 NextJS 中创建了一个 dynamic
API 路由,如果给定 filename
,服务器将读取文件(.md
或 .txt
文件) 在 content
目录下,将其转换为字符串并 returns 。 API 在 local
环境中按预期工作,但是,在 Vercel
中部署的网站对于此 API 路由无法正常工作。
那个API路由,对于content
目录下存在的一个文件,returns 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.` })
}
}
- 检查 Vercel 上的日志
- 在 Vercel 上为每个环境配置您的.env variables
- 检查您的本地
.env
文件。如果您对 .env 变量进行硬编码 - 这将造成负面影响。
问题居然解决了
我刚刚替换了这个
path.join('./content/', slug);
有了这个
path.join(process.cwd(), 'content', slug);
[已解决]
我在 NextJS 中创建了一个 dynamic
API 路由,如果给定 filename
,服务器将读取文件(.md
或 .txt
文件) 在 content
目录下,将其转换为字符串并 returns 。 API 在 local
环境中按预期工作,但是,在 Vercel
中部署的网站对于此 API 路由无法正常工作。
那个API路由,对于content
目录下存在的一个文件,returns 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.` })
}
}
- 检查 Vercel 上的日志
- 在 Vercel 上为每个环境配置您的.env variables
- 检查您的本地
.env
文件。如果您对 .env 变量进行硬编码 - 这将造成负面影响。
问题居然解决了
我刚刚替换了这个
path.join('./content/', slug);
有了这个
path.join(process.cwd(), 'content', slug);