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

NextJS API路由中文件路径无法解析,如何获取正确路径?

解决NextJS API路由在Vercel部署时的文件路径问题

从日志路径/var/task/packages/project-root/img/file.svg能看出,你的项目属于monorepo结构,在Vercel部署时process.cwd()返回的是整个仓库的根目录(/var/task),而非NextJS应用所在的子目录,这就导致路径拼接后找不到目标文件。

可以通过以下两种方式修复:

方法1:基于__dirname拼接路径

API路由文件的__dirname指向当前路由文件的所在目录,以此为基准向上回溯到目标文件的位置,这种方式在本地和Vercel环境下都能正常工作:

const path = require('path');
const fs = require('fs');

// 假设API路由文件位于 packages/project-root/pages/api/xxx.js
const svg = fs.readFileSync(
  path.join(__dirname, '../../img/file.svg'),
  'utf-8',
);

方法2:明确指定子目录路径

如果项目结构固定,直接在process.cwd()后拼接NextJS应用所在的子目录路径:

const path = require('path');
const fs = require('fs');

const svg = fs.readFileSync(
  path.join(process.cwd(), 'packages/project-root', 'img', 'file.svg'),
  'utf-8',
);

额外需要确认两点:

  • img/file.svg确实存在于本地项目的对应目录中
  • 该文件已提交至Git仓库(Vercel部署仅拉取Git仓库内的文件,会忽略.gitignore标注的内容)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 09:31:04