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

Heroku部署Node.js+Sequelize项目连接本地SQL Server 1433端口失败

核心问题原因

你配置中的数据库host设为localhost,指向的是Heroku应用运行所在的云端容器的本地环境,并不是你开发时所用的本地电脑上的SQL Server服务,因此无法建立连接,日志返回的ESOCKET错误就是典型的网络不通报错。

可行解决方案

方案1:将本地SQL Server暴露到公网(仅临时测试使用,不建议生产环境使用)

  • 查询你本地网络的公网IP
  • 进入路由器管理后台配置端口映射:将路由器公网的1433端口,映射到运行SQL Server的电脑的内网IP的1433端口
  • 放行本地电脑防火墙的1433端口入站规则
  • 修改Sequelize配置,同时将所有连接参数存入Heroku环境变量,不要硬编码:
const { Sequelize } = require('sequelize');

// Connection to SQL Server
const db = new Sequelize('Cafeteria', process.env.SQL_NAME, process.env.SQL_PASS, {
    host: process.env.SQL_HOST, // 替换为你的公网IP,在Heroku后台配置SQL_HOST环境变量
    dialect: 'mssql',
    dialectOptions: {
        options: {
            encrypt: true,
            trustServerCertificate: true
        }
    }
    // logging: false,
});

module.exports = db;
  • 进入Heroku应用后台的「Settings」-「Config Vars」页面,填写对应环境变量的值。

注意:该方案安全风险极高,公网暴露数据库端口很容易被暴力破解攻击,仅可用于临时测试。

方案2:迁移数据库到云端SQL Server实例(生产环境推荐)

  • 选择云厂商的云SQL Server服务,创建实例后开放公网访问权限,将本地的Cafeteria数据库迁移到云端实例
  • 将Sequelize配置中的host修改为云端实例的公网连接地址,对应配置用户名、密码等参数即可,该方案的稳定性和安全性都有保障。

方案3:更换为Heroku平台原生数据库服务

如果业务不强制依赖SQL Server,可直接开通Heroku平台提供的PostgreSQL等附加数据库服务,开通后直接获取官方提供的连接参数替换配置即可,无需额外做网络适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 05:06:03