初学Autodesk Forge按官方教程开发遇自签名证书错误如何解决?
报错原因
- 核心错误为
self signed certificate in certificate chain,是你的当前网络环境(例如公司内网、带SSL拦截功能的代理或防火墙)在请求Autodesk Forge官方接口时,中间插入了自签名SSL证书,Node.js默认会校验SSL证书链的合法性,识别到非官方信任的自签名证书后就会拒绝连接,抛出该错误。 - 第二个
UnhandledPromiseRejectionWarning属于衍生报错:教程示例代码中调用Forge接口的异步逻辑没有捕获该连接错误,未处理的Promise拒绝状态就触发了这个警告;前端的Buckets&Objects模块因为无法获取接口返回数据,就会一直卡在加载状态。
解决方法
分为临时调试方案和长期合规方案两类:
临时调试方案(仅适用于本地开发,禁止在生产环境使用)
- 方案1:启动Node服务前添加环境变量禁用全局SSL证书校验
- Windows CMD环境执行:
set NODE_TLS_REJECT_UNAUTHORIZED=0 - Windows PowerShell环境执行:
$env:NODE_TLS_REJECT_UNAUTHORIZED=0 - Mac/Linux终端环境执行:
export NODE_TLS_REJECT_UNAUTHORIZED=0
执行后正常启动应用即可生效。
- Windows CMD环境执行:
- 方案2:如果使用VSCode调试,可在
.vscode/launch.json的调试配置中添加对应环境变量:{ "configurations": [ { // 保留你原有调试配置的其他参数,新增下方env项 "env": { "NODE_TLS_REJECT_UNAUTHORIZED": "0" } } ] } - 方案3:修改项目中调用Forge接口的请求配置,添加
rejectUnauthorized: false参数,跳过单个请求的证书校验。
长期合规方案
- 导出当前网络环境的自签名根证书,存到项目目录下,在Node服务的启动代码中添加配置加载该信任证书:
const https = require('https'); const fs = require('fs'); // 替换为你的根证书实际路径 const rootCACert = fs.readFileSync('./internal-root-ca.crt'); https.globalAgent.options.ca = rootCACert; - 额外优化建议:在所有调用Forge接口的异步逻辑位置添加try/catch捕获异常,避免未处理的Promise报错影响服务稳定性,也方便后续排查其他接口类问题。
内容的提问来源于stack exchange,提问作者Adel Safin
相关产品推荐
相关产品推荐

