在Windows中,停止postgres服务会导致节点崩溃,并显示“错误:由于管理员命令而终止连接”

时间:2018-08-13 11:15:46

标签: javascript node.js windows postgresql express

方案1:postgres服务未运行。节点启动。休息电话超时=>没有问题

方案2:postgres服务未运行。节点启动。 postgres服务启动。休息电话工作=>没问题

方案3:postgres服务未运行。节点启动。 postgres服务启动。休息电话工作。 postgres服务停止=>节点崩溃。

发生这种情况时的堆栈跟踪如下:

  

错误:由于管理员命令而终止连接       在Connection.parseE(... \ express.js \ node_modules \ pg \ lib \ connection.js:553:11)       在Connection.parseMessage(... \ express.js \ node_modules \ pg \ lib \ connection.js:378:19)       在套接字。 (... \ express.js \ node_modules \ pg \ lib \ connection.js:119:22)       在emitOne上(events.js:116:13)       在Socket.emit(events.js:211:7)       在addChunk(_stream_visible.js:263:12)       在readAddChunk(_stream_visible.js:250:11)       在Socket.Readable.push(_stream_read.js:208:10)       在TCP.onread(net.js:594:20)

我正在通过以下配置使用Postgres Pool:

const pool = new Pool({
    user: 'postgres',
    host: 'localhost',
    database: 'sampleDB',
    password: 'password',
    port: 5432,
    max: 1,
    idleTimeoutMillis: 30000,
    connectionTimeoutMillis: 2000,
})

如何处理这种情况,以使节点不会崩溃,并且可以返回到方案1,然后再移至方案2?

1 个答案:

答案 0 :(得分:0)

阅读完node-postgres(link)的文档后,我想出了一种捕获此错误并避免节点崩溃的方法。

this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.RECORD_AUDIO).then(
          (result)=>{   
       if(!result.hasPermission)
       {
         this.androidPermissions.requestPermissions(
           [this.androidPermissions.PERMISSION.RECORD_AUDIO, 
             this.androidPermissions.PERMISSION.GET_ACCOUNTS]
            ).then(()=>{
             // this.rootPage = HomePage;
             window.location.reload();
            });

   }
     });

添加以上代码将使节点能够处理错误,而不会崩溃。