Próbuję wdrożyć moją aplikację node.js (z plikiem express i mangusta) do openshift i nie jestem w stanie tego zrobić. Aplikacja działa idealnie w moim lokalnym środowisku.Nie można uruchomić aplikacji (port 8080)
moim punktem wyjścia jest plik/bin/www
Ja utwierdzę to jako punkt wyjścia na openshift z tej linii w pliku package.json (za this thread):
"main": "bin/www",
mam zadbał, aby ustawić moje połączenie MongoDB za pomocą zmiennych środowiskowych według przewodnika tak:
// default to a localhost configuration:
var mongoConnectionString = 'mongodb://127.0.0.1/code-blog';
// if OPENSHIFT env variables are present, use the available connection info:
if (process.env.OPENSHIFT_MONGODB_DB_PASSWORD) {
mongoConnectionString = process.env.OPENSHIFT_MONGODB_DB_USERNAME + ":" +
process.env.OPENSHIFT_MONGODB_DB_PASSWORD + "@" +
process.env.OPENSHIFT_MONGODB_DB_HOST + ':' +
process.env.OPENSHIFT_MONGODB_DB_PORT + '/' +
process.env.OPENSHIFT_APP_NAME;
}
mongoose.connect(mongoConnectionString);
błąd, który pojawia się:
remote: Waiting for application port (8080) become available ...
remote: Application 'codeblog' failed to start (port 8080 not available)
remote: -------------------------
remote: Git Post-Receive Result: failure
remote: Activation status: failure
remote: Activation failed for the following gears:
remote: 558a25bd5973ca7a74000162 (Error activating gear: CLIENT_ERROR: Failed to
execute: 'control start' for /var/lib/openshift/558a25bd5973ca7a74000162/nodejs
remote: #<IO:0x00000000b49380>
remote: #<IO:0x00000000b49308>
remote:)
remote: Deployment completed with status: failure
remote: postreceive failed
To ssh://[email protected]/~/git/codebl
og.git/
29635a8..7a0e926 master -> master
Jest to dla mnie szczególnie ważne, ponieważ nie określam portu 8080 w dowolnym miejscu. W rzeczywistości domyślny port jest określony tutaj:
var port = normalizePort(process.env.OPENSHIFT_NODEJS_PORT || "3000");
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1";
app.set('port', port);
var server = http.createServer(app);
Nie jestem naprawdę pewien, dokąd się udać. Wydaje mi się, że nie mam wystarczająco dużo informacji, aby określić mój następny krok.
[edycja] Dodałem trochę logowania, aby przetestować port, na którym działa, ale instrukcja rejestrowania nigdy nie jest uruchamiana. Oto kod
console.log("TEST TEST TEST");
var app = require('../app');
var debug = require('debug')('ProjectTemplate:server');
var http = require('http');
var port = normalizePort(process.env.OPENSHIFT_NODEJS_PORT || "3000");
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1";
console.log("PORT: ", port);
i wyjście
TEST TEST TEST
module.js:340
throw err;
^
Error: Cannot find module './routes/logIn'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/var/lib/openshift/558a25bd5973ca7a74000162/app-root/ runtime/repo/app.js:26:13)
TEST TEST TEST
jest z oświadczeniem rejestrowania na początku pliku punktu wejścia. Wydaje się, że coś nie działa, zanim trafi na console.log("PORT: ", port);
Prawdopodobnie jest to związane z app.js
, w którym nawiązano połączenie MongoDb.
[/ edit]
console.log (port) ';' i zobaczyć, co daje –
konfigurację post z was serwisu aplikacyjnego dla ruchu HTTP nie ma nic wspólnego z MongoDB. Przestań dodawać nietrafne znaczniki do swojego pytania. –
Podobne komunikaty o błędach, które pojawiły się na tych tablicach, wskazują na problem z łańcuchem połączenia MongoDb. Nie chcę tego wykluczać jako możliwej przyczyny bez bardziej merytorycznego zapytania. –