Noob здесь. Я пытаюсь построить сервер api на Openshift, используя экспресс. Я также хочу иметь возможность обслуживать статические файлы из папки/static. Проблема в том, что я не могу понять, как настроить его на Openshift. Я пробовал все, что мог придумать.openshift express приложение, обслуживающее статические файлы
У меня есть 2 файла сервера, приложение, которое вызывает файл router.js для маршрутов.
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?
}
Все работает, кроме обслуживания статических файлов. Не уверен, что мне нужно поместить что-то в файл app.js в качестве промежуточного программного обеспечения, в файл маршрутизатора или и то, и другое. Также не уверен, нужно ли мне использовать переменные среды Openshift? Может кто-то подтолкнет меня в правильном направлении?
EDIT: После того, как я добавил строку: app.use (express.static ('/ статический')); в файл app.js, он работает локально, но все же не работает в Openshift. Мне действительно нужна помощь, и поскольку openshift свободен, они не очень отзывчивы. – Coco