Noob hier. Ich versuche einen Api-Server auf OpenShift mit Express zu bauen. Ich möchte auch statische Dateien aus dem Ordner/static bereitstellen können. Das Problem ist, ich kann nicht herausfinden, wie man es bei OpenShift einrichtet. Ich habe alles versucht, was mir einfällt.openshift express app serving statische dateien
Ich habe 2 Server-Dateien, die App-Setup, die eine router.js-Datei für die Routen aufruft.
app.js
const express = require('express');
const http = require('http');
const bodyParser = require('body-parser');
const morgan = require('morgan');
const env = process.env;
const app = express();
const router = require('./router');
const mongoose = require('mongoose');
const cors = require('cors');
// DB Setup
// default to a 'localhost' configuration:
var connection_string = '127.0.0.1:27017/api:api';
// if OPENSHIFT env variables are present, use the available connection info:
if(env.OPENSHIFT_MONGODB_DB_PASSWORD){
connection_string = env.OPENSHIFT_MONGODB_DB_USERNAME + ":" +
env.OPENSHIFT_MONGODB_DB_PASSWORD + "@" +
env.OPENSHIFT_MONGODB_DB_HOST + ':' +
env.OPENSHIFT_MONGODB_DB_PORT + '/' +
env.OPENSHIFT_APP_NAME;
}
mongoose.connect('mongodb://' + connection_string);
// App Setup
app.use(morgan('combined')); //logging middleware
app.use(cors()); // allow cross origin requests
app.use(bodyParser.json({ type: '*/*'})); //read requests as json
-----> do I need to put something here ????
router(app);
// Server Setup
const port = env.NODE_PORT || 3090;
const ip = env.NODE_IP || 'localhost';
const server = http.createServer(app);
server.listen(port, ip);
console.log('Server listening on: ', port);
router.js
const Authentication = require('./controllers/authentication');
const passportService = require('./services/passport');
const passport = require('passport');
const requireAuth = passport.authenticate('jwt', { session: false});
const requireSignin = passport.authenticate('local', { session: false});
module.exports = function(app) {
app.post('/signup', Authentication.signup);
app.post('/signin', requireSignin, Authentication.signin);
app.get('/health', function (req, res, next) {
res.writeHead(200);
res.end();
});
----> and/or something here?
}
Alles funktioniert, außer statische Dateien dienen. Ich bin mir nicht sicher, ob ich etwas in die app.js-Datei als Middleware, in die Router-Datei oder beides schreiben muss. Auch nicht sicher, ob ich OpenShift-Umgebungsvariablen verwenden muss? Kann mich jemand in die richtige Richtung schubsen?
EDIT: Nachdem ich die Zeile hinzugefügt: app.use (express.static ('/ static')); in der app.js-Datei, es funktioniert lokal, aber immer noch nicht auf Openshift. Ich brauche wirklich Hilfe, und da OpenShift kostenlos ist, sind sie nicht sehr reaktionsschnell. – Coco