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

Heroku部署的Node.js/express.js服务远程调试报连接被规则集拒绝如何解决

问题原因

你遇到的connection not allowed by ruleset+EACCES报错,核心是Heroku远端的Node.js进程没有开启调试端口9229的公开监听,端口转发找不到可连接的目标服务。

正确调试步骤

1. 开启远端服务的调试模式

两种方案二选一即可:

  • 方案1(无需改代码):执行命令给应用加启动参数,然后重启dyno
# 配置Node启动时自动开启调试,监听所有网卡的9229端口
heroku config:set NODE_OPTIONS="--inspect=0.0.0.0:9229" --app 替换为你的Heroku应用名
# 重启应用生效
heroku ps:restart --app 替换为你的Heroku应用名
  • 方案2(改代码提交):修改项目根目录的Procfile,把web进程的启动命令加上调试参数,比如原先是web: node index.js就改成:
web: node --inspect=0.0.0.0:9229 index.js

修改后提交代码推送到Heroku即可生效。

2. 验证远端调试端口正常监听

执行命令进入Heroku应用的shell环境,确认端口正常监听:

heroku run bash --app 替换为你的Heroku应用名
# 进入shell后执行
netstat -tulpn | grep 9229

如果能看到Node进程监听9229端口的输出就说明配置生效。

3. 修正本地调试配置

你现有的两套配置里第二套是正确的,第一套的address是占位符直接删掉即可,最终用这套配置就行:

{
    "configurations": [
        {
            "type": "node",
            "request": "attach",
            "name": "Remote Heroku: Debug Remote Server",
            "address": "localhost",
            "port": 9229,
            "protocol": "inspector",
            "localRoot": "${workspaceFolder}",
            "remoteRoot": "/app"
        }
    ]
}

4. 执行端口转发并启动调试

  • 先确认本地9229端口没有被占用:Mac/Linux执行lsof -i:9229,Windows执行netstat -ano | findstr 9229,如果有其他进程占用就先关掉对应进程,或者把转发端口换成9230等未占用端口,同步修改VSCode配置里的port字段即可。
  • 执行端口转发命令:
heroku ps:forward 9229 --app 替换为你的Heroku应用名

等终端输出Listening on 9229 and forwarding to web.1:9229之后,再启动VSCode的调试即可正常连接。

调试完成后的收尾操作

调试完一定要关闭调试模式,避免安全风险和性能损耗:

# 移除调试启动参数
heroku config:unset NODE_OPTIONS --app 替换为你的Heroku应用名
# 重启dyno生效
heroku ps:restart --app 替换为你的Heroku应用名

常见问题排查

  • 如果还是报错,先检查本地防火墙、代理软件有没有拦截1080(Heroku转发默认用的SOCKS代理端口)或9229端口的连接。
  • 用免费dyno的话,调试前先访问一次你的应用接口,把休眠的dyno唤醒,避免连接超时。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:06:04