代码之家  ›  专栏  ›  技术社区  ›  Paulo Henrique

节点。JS router get返回ERR\u EMPTY\u响应页错误

  •  2
  • Paulo Henrique  · 技术社区  · 8 年前

    我正在构建一个节点。带express的JS应用程序。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连接对于其他查询工作正常,但此特定过程是从节点调用的,大约需要3分钟。该过程始终返回一个包含SQL错误或成功结果的数据集。但在这种情况下,当我浏览到路由器时,需要一些时间才能返回error\u EMPTY\u响应。

    当我检查SQL Server时,该过程仍在运行,我假设 mssql节点超时 ,所以我设置:>

    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;
    

    他们都没有解决这个问题。。。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Paulo Henrique    8 年前

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

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

    在我的应用程序中。js文件,这是错误的。。。

    因为我用的是express。js,您应该添加以下行

    server.timeout = 500000;
    

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

    推荐文章