NextJS/Vercel生产环境无法读取public目录PDF文件求助
解决Next.js部署到Vercel时无法读取public目录PDF文件的问题
问题原因
Vercel生产环境的工作目录与本地不一致,直接使用相对路径public/assets/Bonus_1.pdf会导致文件定位失败,而本地环境的工作目录就是项目根目录,因此能正常读取文件。
解决方案
1. 使用绝对路径拼接文件路径
修改获取文件路径的代码,通过process.cwd()获取项目根目录,再拼接public目录的路径,确保在任何环境下都能定位到正确的文件:
const pathToAttachment1 = path.join(process.cwd(), "public", "assets", "Bonus_1.pdf"); const attachment1 = fs.readFileSync(pathToAttachment1).toString("base64");
2. 确认Vercel部署时文件已被正确包含
- 检查项目的
.gitignore文件,确保没有忽略public/assets/Bonus_1.pdf或整个public/assets目录; - 查看Vercel部署日志,确认该PDF文件在构建过程中被正常上传至服务器。
3. 可选:验证绝对路径正确性
可以在代码中打印最终的绝对路径,方便排查路径问题:
const fullPath = path.join(process.cwd(), "public", "assets", "Bonus_1.pdf"); console.log("Full file path:", fullPath);
内容的提问来源于stack exchange,提问作者Ives E.
相关产品推荐
相关产品推荐

