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

部署解析简历的Node.js API遇403及未处理Promise拒绝警告

解决Render部署简历解析Node.js API的403及Promise拒绝问题

核心问题分析

你遇到两个关键问题:

  • 403状态码:Eden AI API权限验证失败,请求被拒绝
  • 未处理Promise拒绝警告:axios请求未捕获错误,触发Node.js警告

分步解决方法

1. 修复Eden AI API权限验证(解决403)

Eden AI的authorization请求头要求格式为Bearer [你的API密钥],你当前代码里的'Api key'是占位符,必须替换为实际密钥,且要通过环境变量安全存储(禁止硬编码到代码):

  • 在Render控制台的服务设置中,添加环境变量EDENAI_API_KEY,值为你的Eden AI密钥
  • 修改代码中的headers部分:
headers:{
    authorization: `Bearer ${process.env.EDENAI_API_KEY}`,
    // 移除手动设置的Content-Type,axios会自动处理multipart/form-data的boundary
},

2. 捕获Promise错误(消除警告)

给axios请求添加.catch()块,处理请求失败的情况:

axios.request(options)
.then((response) => {
    console.log(response.data);
    const data = JSON.stringify(response.data);
    console.log(data);
})
.catch((error) => {
    // 打印详细错误信息,方便排查
    console.error('请求失败:', error.response?.data || error.message);
});

3. 适配Render的文件路径问题

你当前代码读取本地固定路径./Resume-Titouhi-Omar.pdf,在Render部署后:

  • 确保该文件已上传到项目根目录,或使用绝对路径
  • 更合理的做法是将API改为接收用户上传的文件(而非读取本地固定文件),示例修改(需配合Express框架):
const express = require('express');
const multer = require('multer');
const upload = multer();
const app = express();
const port = process.env.PORT || 3000;

app.post('/parse-resume', upload.single('resume'), async (req, res) => {
    try {
        const form = new FormData();
        form.append("providers", "affinda,hireability");
        form.append("file", req.file.buffer, req.file.originalname);

        const options = {
            method: 'POST',
            url: 'https://api.edenai.run/v2/ocr/resume_parser',
            headers:{
                authorization: `Bearer ${process.env.EDENAI_API_KEY}`,
                ...form.getHeaders()
            },
            data: form
        };

        const response = await axios.request(options);
        res.json(response.data);
    } catch (error) {
        res.status(error.response?.status || 500).json({
            error: error.response?.data || error.message
        });
    }
});

app.listen(port, () => {
    console.log(`服务运行在端口 ${port}`);
});

注意:使用上述代码需先安装依赖:npm install express multer


Render部署额外配置

  • 确保package.json中有正确的start脚本,例如:"start": "node server.js"(对应你的主文件名)
  • 确认环境变量EDENAI_API_KEY已正确设置
  • 若使用固定简历文件,需确保该文件已上传至Git仓库并同步到Render

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:35:32