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.` })
    }
}
  1. 检查 Vercel 上的日志
  2. 在 Vercel 上为每个环境配置您的.env variables
  3. 检查您的本地 .env 文件。如果您对 .env 变量进行硬编码 - 这将造成负面影响。

问题居然解决了

我刚刚替换了这个

path.join('./content/', slug);

有了这个

path.join(process.cwd(), 'content', slug);