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;