sql-server - Node.JS 路由器返回 ERR_EMPTY_RESPONSE 页面错误

标签 sql-server node.js express

我正在使用express.js构建一个node.JS应用程序,它基本上是SQL Server中进程的桥梁。

所以我有这个路由器:

router.get('/runpr/:ref', function(req, res, next) {

var p1 = req.params.ref;
execSQLQuery("EXEC SP_PROCESSA_PREMIO "+p1, function(result, err) {
    var response = '';
    if ( err != null ) { 
        // change error to node errors
        response = [{
            A_STATUS: 0,
            MSG: err.originalError.info.message,
            FINISHED: new Date(Date.now())
        }];  
    } else {
        response = result.recordset;
    }

    res.json( response );
});

})

被调用的函数execSQLQuery:

function execSQLQuery(sqlQry, callback) {
var request = new sql.Request();
request.query(sqlQry, function(err, recordset) {
    callback(recordset, err);
});

}

SQL 连接对于其他查询工作正常,但是这个特定的 PROCEDURE 是从 Node 调用的,大约需要 3 分钟。该过程总是返回一个包含 SQL 错误或成功结果的数据集。但在这种情况下,当我浏览到路由器时,需要一些时间才能返回错误 ERR_EMPTY_RESPONSE。

当我检查 SQL Server 时,该过程仍在运行,我假设存在 mssql-node 超时,因此我进行了设置:>

var config = {
    user: 'xxxx',
    password: 'xxx',
    server: 'xxxx',
    database: 'xxxx',
    connectionTimeout: 500000,
    requestTimeout: 500000
}

还有这个,对于 Node 本身:

// listen and timeout
var server = app.listen(app.get('port'))
server.timeout = 500000;

他们都没有解决问题......

最佳答案

刚找到答案。我正在设置下面的配置

// listen and timeout
var server = app.listen(app.get('port'))
server.timeout = 500000;

在我的 app.js 文件中,这是错误的......

由于我使用express.js 运行它,因此您应该添加以下行

server.timeout = 500000;

在 bin 文件夹内的“www”文件中。

关于sql-server - Node.JS 路由器返回 ERR_EMPTY_RESPONSE 页面错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49796965/

相关文章:

node.js - 在 NodeJS Express 框架中处理批量 REST API 请求

javascript - 在 API Client 中公开 Expressjs 中间件

node.js - 捕获 Node.js 快速代理应用程序中的异常

c# - 即使生成的 SQL 很快, Entity Framework 也会随着添加的额外连接而逐渐变慢

linux - 如何修复上传文件 Apache、Passenger、Node 时出现的 EACCES 错误

java - 如何在 java eclipse 中刷新 JTable 后从 JTABLE 获取值并将其传递给文本字段

node.js - 在nodejs中抓取网页的动态数据

javascript - Node.js - 监听监听器何时注册

SQL Server 2008 - 使用 ROW_NUMBER 查找重复项

sql - CAST nvarchar 到 DATETIME