Express-套接字挂断

时间:2020-02-06 21:53:24

标签: node.js express vercel

我为应用服务器端编写了以下代码:

const express = require('express');
const app = express();
const path = require('path');
const morgan = require('morgan');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
require('dotenv').config()

const userRoutes = require('./api/routes/user');

const port = process.env.PORT || 3000;

mongoose.connect(String(process.env.DB_CONNECT), {
  useCreateIndex: true,
  useNewUrlParser: true,
  useUnifiedTopology: true
}, () => console.log('Connect to the database'));

mongoose.Promise = global.Promise;

app.use(morgan('dev'));
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.use( (req, res, next) => {
  res.header('Access-Control-Allow-Origin', 'https://constafast.cf');
  res.header(
    'Access-Control-Allow-Headers',
    'Origin, X-Requested-With, Content-Type, Accept, Authorization'
  );
  res.header('Connection', 'Keep-Alive');

  if ( req.method === 'OPTIONS' ) {
    res.header('Access-Control-Allow-Methods', 'PUT, POST, PATCH, DELETE, GET');
    return res.status(200).json({});
  }

  next();
});

app.use('/api/user', userRoutes);

app.use( (req, res, next) => {
  const error = new Error('Not found');
  error.status = 404;
  next(error);
});

app.use( (error, req, res, next) => {
  res.status(error.status || 500);
  res.json({
    error: {
      message: error.message
    }
  });
});

app.listen(port, () => console.log(`Server up and running on port ${port}`));

我已经在zeit技术上部署了该服务器,但有时(最近经常发生)我注意到请求没有成功。查看zeit日志,我看到此错误:

{“ errorType”:“ Error”,“ errorMessage”:“ socket hang up”,“ code”:“ ECONNRESET”,“ stack”:[“ Error:socket hang up”,“ at connResetException(内部/错误.js:570:14)“,”在Socket.socketOnEnd(_http_client.js:440:23)“,”在Socket.emit(events.js:215:7)“,”在endReadableNT(_stream_read.js:1183 :12)“,”在processTicksAndRejections(internal / process / task_queues.js:80:21)“]

如何防止或永久解决此错误?

0 个答案:

没有答案