【发布时间】:2016-10-26 08:54:18
【问题描述】:
这里是菜鸟。我正在尝试使用 express 在 Openshift 上构建一个 api 服务器。我还希望能够从 /static 文件夹中提供静态文件。问题是,我不知道如何在 Openshift 上进行设置。我已经尝试了我能想到的一切。
我有 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);
路由器.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 环境变量?有人可以将我推向正确的方向吗?
【问题讨论】:
-
编辑:在我添加行之后:app.use(express.static('/static'));到 app.js 文件,它可以在本地工作,但仍然不能在 Openshift 上工作。我真的需要一些帮助,而且由于 openshift 是免费的,所以他们反应不快。
标签: node.js express static openshift