Ich habe Probleme mit der Bereitstellung meiner NodeJs-App. Ich verwende Express, MySQL und die grundlegende Express-Struktur für meine App. Wenn ich die App-URL auf openshift öffne, erhalte ich die Fehlermeldung 503. Auf dem nodejs.log kann ich das sehen:Die NodeJS-App funktioniert nach der Bereitstellung nicht bei OpenShift.
Warning: connect.session() MemoryStore is not
designed for a production environment, as it will leak
memory, and will not scale past a single process.
Pipe 8080 is already in use
Die Anwendung wird mit ./bin/www ausgeführt. Dies ist der Code, den ich in dieser Datei haben:
#!/usr/bin/env node
/**
* Module dependencies.
*/
var app = require('../app');
var debug = require('debug')('adressbook:server');
var http = require('http');
/**
* Get port from environment and store in Express.
*/
var port = process.env.OPENSHIFT_NODEJS_PORT || 8080;
app.set('port', port);
/**
* Create HTTP server.
*/
var server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
/**
* Normalize a port into a number, string, or false.
*/
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
}
/**
* Event listener for HTTP server "error" event.
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
/**
* Event listener for HTTP server "listening" event.
*/
function onListening() {
//var addr = server.address();
var addr = process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1";
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}
Ty @gnerkus mehr über den Umgang mit Umgebungsvariablen auf Openshift lesen! Aber irgendwie kann ich die Portnummer nicht einstellen ... Wenn ich einen Port auf schreibe (übrigens, welchen Port soll ich hören?), Bekomme ich die folgende Nachricht: Einstellung Umgebungsvariable (n) ... OPENSHIFT_NODEJS_PORT kann nicht überschrieben werden Eigentlich, wenn ich rcc env show list -a App_name ausführen, wird nichts angezeigt ... –
ArtanisAce