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

如何解决Next.js API模块中出现的ENOENT错误问题?

问题修复方案

报错原因

  • 核心错误为ESM模块化规范下不支持CommonJS专属的__dirname变量,Next.js的API路由默认采用ESM规范,原有Node.js CommonJS写法不兼容
  • 前端代码中误将axios返回的status属性作为方法调用,也会触发运行错误
  • 部分环境API路由请求路径大小写敏感,当前代码的路径和文件名大小写不匹配可能额外触发404错误

修复步骤

1. 修改/store/manipulate.js路径解析逻辑,适配ESM规范

替换原有require导入和__dirname写法,代码如下:

import path from 'path'
import fs from 'fs'
import { fileURLToPath } from 'url'

// 兼容ESM规范获取当前文件目录
const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(__filename)

const readData = () => {
    const data = JSON.parse(fs.readFileSync(path.join(__dirname, 'store.json')))
    return data
}

export const fetchFeaturedEvents = () => {
    let data = readData()
    const result = data.filter(event => event.isFeatured)
    return result
}

2. 修复Homepage.jsx中status判断的错误写法

axios返回的status是数字属性而非方法,修改判断逻辑:

// 原有错误写法
// if (res.status(200)) {
// 修正后写法
if (res.status === 200) {

3. 可选:统一API路由大小写避免部署问题

将/pages/api/getFeaturedEvents.js重命名为全小写的getfeaturedevents.js,或者将前端请求路径改为/api/getFeaturedEvents,保证路径和文件名大小写完全匹配,避免Linux等大小写敏感环境下出现404错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:09:01