2016-06-23 11 views
0

ここにNoobがあります。私はエクスプレスでOpenshiftでapiサーバーを構築しようとしています。/staticフォルダから静的ファイルを提供できるようにしたい。問題は、私はOpenshiftでそれを設定する方法を理解できないということです。私は考えることができるすべてを試しました。openshift express app提供静的ファイル

私は2つのサーバーファイルを持っています。これはルートのrouter.jsファイルを呼び出すアプリケーションの設定です。

app.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? 
} 

すべてが静的ファイルを提供する以外に動作

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。 app.jsファイルにミドルウェア、ルータファイル、またはその両方を配置する必要があるかどうかは不明です。 Openshift環境変数を使用する必要があるかどうかもわかりません。誰かが私を正しい方向に向けることができますか?

+0

EDITを使用してapp.jsに以下を追加することにより、静的なファイルを提供することができます表現:私は、行を追加した後: app.use(express.static( '/静的')); をapp.jsファイルに追加すると、ローカルでは動作しますが、まだOpenshiftでは動作しません。 私は実際にいくつかの助けが必要です。オープンシフトは無料であるため、非常に反応的ではありません。 – Coco

答えて

0

では、あなたがexpress.static()

var path = require('path'); 

// put this before all of your routes 
app.use(express.static(path.join(__dirname, 'static'))); 
+0

私はpath.joinの前にこれを試しました、今私はあなたがここにいるようにpath.joinでもう一度試しました。それでも404が見つかりません。すべてのルートの前にあなたが言うときは、ルーターファイルを意味しますか?または上記の矢印があるアプリファイルで? – Coco

+0

はい、どこにコメントの矢印があります – peteb

+0

私はそれを試みましたが、私はまだ404が見つかりません。 Openshiftと何か関係があると思っていますか?おそらく正しいディレクトリを指すのに問題がありますか?私はそこにファイルがあることを見ることができる、私はそれらを提供するように見えない。 – Coco

関連する問題