【问题标题】:Node.JS router get returning ERR_EMPTY_RESPONSE page errorNode.JS 路由器返回 ERR_EMPTY_RESPONSE 页面错误
【发布时间】:2018-04-12 22:09:32
【问题描述】:

我正在使用 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 需要 3 分钟,或多或少。该过程总是返回一个带有 SQL 错误或成功结果的数据集。但是在这种情况下,当我浏览到路由器时,需要一些时间才能返回错误 ERR_EMPTY_RESPONSE。

当我检查 SQL Server 时,程序仍在运行,我假设有 mssql-node 超时,所以我设置:>

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

还有这个,对于节点本身

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

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

【问题讨论】:

    标签: sql-server node.js express


    【解决方案1】:

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

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

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

    由于我是用 express.js 运行的,所以你应该添加以下行

    server.timeout = 500000;
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 2019-09-11
      • 2015-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多