0

Error stack trace:

_http_server.js:188 
    throw new RangeError(Invalid status code: ${originalStatusCode}); ^
RangeError: Invalid status code: -1
    at ServerResponse.writeHead (_http_server.js:188:11) 
    at ServerResponse.writeHead (E:\game\jzmj\server\jzmj-web-server\node_modules\on-headers\index.js:55:19) 
    at ServerResponse._implicitHeader (_http_server.js:179:8) 
    at write_ (_http_outgoing.js:630:9) 
    at ServerResponse.end (_http_outgoing.js:749:5) 
    at writeend (E:\game\jzmj\server\jzmj-web-server\node_modules\express-session\index.js:261:22) 
    at Immediate.ontouch [as _onImmediate] (E:\game\jzmj\server\jzmj-web-server\node_modules\express-session\index.js:348:11) 
    at runCallback (timers.js:781:20) 
    at tryOnImmediate (timers.js:743:5) 
    at processImmediate [as _immediateCallback] (timers.js:714:5)
Process finished with exit code 1

I don't know how does the code -1 generated. It appears when I start my server for several days, I don't know how it happen, seems not caused by my code.Does anybody can help me...

I put some of my code below.

app.js,the entrance.

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
// app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(session({
    secret: 'xxxxx',
    name: 'xxxxx',
    cookie: {maxAge: 2592000000 },
    resave: false,
    saveUninitialized: true
}));
app.use(express.static(path.join(__dirname, 'public')));
app.use("/h5", express.static("../../client/h5"));
app.use("/app", express.static("../../client/app"));
app.use("/wx_auth_h5", wx_auth_h5);
app.use("/app_version", app_version);
app.use('/download/app', download_app);
app.use('/users', users);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

wx_auth_h5.js,I use res.writeHead,but my code is 200, not -1.

var express = require('express');
var router = express.Router();
var OAuth = require('wechat-oauth');
var wxTicket = require('./wx/wx_ticket.js');
var config = require('../config.json');
var db = require('./db/db.js');
var oAuthClient = new OAuth(config.wx_mp_appid, config.wx_mp_secret, getToken, saveToken);
wxTicket.init();
db.init(config.db);

function getToken (openid, callback) {
    var sql = 'SELECT * FROM token WHERE openid = ?';
    db.query(sql, [openid], function (err, result) {
        if(err) {
            return callback(err);
        }
        return callback(null, result[0]);
    });
}

function saveToken (openid, token, callback) {
    var sql = 'REPLACE INTO token(access_token, expires_in, refresh_token, openid, scope, create_at) VALUES(?, ?, ?, ?, ?, ?)';
    var fields = [token.access_token, token.expires_in, token.refresh_token, token.openid, token.scope, token.create_at];
    db.query(sql, fields, function (err, result) {
        return callback(err);
    });
}

function is_wx_browser(req){
    var ua = req.headers["user-agent"].toLowerCase();
    return ua.match(/MicroMessenger/i)=="micromessenger";
    //如果是微信浏览器返回true 否则返回false
}

/* GET home page. */
router.get('/', function(req, res, next) {
    console.log(req.path);
    var redirect_url = oAuthClient.getAuthorizeURL(config.redirect_url, 'state', 'snsapi_userinfo');
    if (!is_wx_browser(req)) {
        redirect_url = oAuthClient.getAuthorizeURLForWebsite(config.redirect_url);
    }
    res.redirect(redirect_url);
});

router.get('/get_access_token', function(req, res, next){
    var code = req.query.code;
    if (!code) {
        var err = new Error('get_access_token no code.');
        next(err);
    } else {
        console.log('start get access token code:' + code);
        oAuthClient.getAccessToken(code, function (err, result) {
            if (err) {
                next(err);
                return;
            }
            var accessToken = result.data.access_token;
            var openid = result.data.openid;
            oAuthClient.getUser(openid, function (err, result) {
                if (err) {
                    next(err);
                    return;
                }
                var userInfo = result;
                req.session = req.session || {};
                req.session.openid = userInfo.openid;
                req.session.unionid = userInfo.unionid;
                req.session.nickname = userInfo.nickname;
                req.session.sex = userInfo.sex;
                req.session.headimgurl = userInfo.headimgurl;
                res.redirect(config.game_url);
            });
        });
    }
});

router.get('/user_session', function(req, res){
    res.send(req.session ? JSON.stringify(req.session) : '');
    res.end();
});

router.get("/wx_ticket", function(req,res){
    var game_url = req.query.url;
    var sign_info = wxTicket.sign(game_url);
    res.writeHead(200,{"Content-type":"text/blain"});
    res.write(sign_info);
    res.end();
});

module.exports = router;
saman
  • 1
  • 2
  • Possible duplicate of [\_http\_server.js:192 throw new RangeError(\`Invalid status code: ${statusCode}\`);](https://stackoverflow.com/questions/39500832/http-server-js192-throw-new-rangeerrorinvalid-status-code-statuscode) – Harsha Jayamanna Nov 02 '17 at 03:28
  • @Harshakj89 I don't think it's the same reason. – saman Nov 07 '17 at 03:29

0 Answers0