2017-02-13 5 views
0

私server.jsは次のとおりです。私のlogin.jsでアプリケーションオブジェクトをモジュールに渡すには?

var express = require('express'); 
var app = express(); 

var login = require('login'); 
app.use('/login', login); 

var express = require('express'); 
var router = express.Router(); 

router.get('/', function(req, res) { 
    res.render('login.jade'); 
}); 

module.exports = router; 

にはどうすればlogin.jsの範囲にserver.jsにappオブジェクトを渡すことができますか?

私はちょうどlogin.jsでvar app = express();をインスタンス化し、その代わりに使用することはできますか? appの2つの異なるインスタンスが存在しますか?

+1

関連:[エクスプレス:どのアプリインスタンスを渡すために別のファイルからの経路に?](http://stackoverflow.com/questions/10090414/express-how-to-pass-app-instance-to-routes-from-a-different-file) –

+0

ありがとう。これはまさに私が求めていたものです。テストされ、それは働いた! –

答えて

1

server.jsにはexportか、globalにするか、パラメータとして渡すことができます。

export app; 
import { app } from './server'; 

又は

global.app = app; 

または:

app.use('/login', login(app)); 

login.js ES6で

function(app) { 
    // login stuff here 
} 
+0

login.jsで 'passport 'を使ってログイン情報を整理したいと思っています。これにはいくつかのミドルウェア項目が必要です。 –

+0

@OldGeezer uhm、大丈夫。私はメインファイルのどこでも 'app'を使うのは好きではありません。 – zurfyx

+0

@OldGeezerは3番目のオプションを追加しました – zurfyx

1

(ecmascript6):

ES5で

:あなたのserver.jsで

server.js 
module.exports: { 
    app: express() 
} 

login.js 
var app = require('path').app 
0

ちょうどあなたlogin.jsでrequire('login')(app);

を使用: -

module.exports = function (app) { 
    app.get('/', function(req, res) { 
     res.render('login.jade'); 
    }); 
}; 
関連する問題