2017-09-29 13 views
0

node/expressのexport/requireに関するチュートリアルを読んで、誰かが私の例で私に説明できるかどうか疑問に思う: なぜ私のルーティングがapp.jsで機能しないのですか?私は何を輸出しなければならず、それを機能させるために必要としますか?どうもありがとう!正しくノードjsでエクスポートし、必要とするには?

index.js:

'use strict' 

    var express = require('express'); 

    var app = express(); 
    module.exports = app; 

    var PORT = process.env.PORT || 1337; 
     app.listen(PORT, function() { 
     console.log('Server is listening!'); 
    }) 

app.js:

var express = require('express'); 
    var bodyParser = require('body-parser'); 
    var path = require('path'); 
    var app = express(); 
    //var app=require('./index.js'); 
    module.exports = function() { 
     app.use(express.static(path.join(__dirname, '../public'))); 
     app.use(express.static(path.join(__dirname, '../browser'))); 
    } 
+0

正確には機能しません。どんなURLを期待していますか?試してみるとどうなりますか? – jfriend00

+0

私は1つのファイルだけでコード全体を持っていたとき、それは働いた - 私はapp.useを通して私のパブリックフォルダにある私のindex.htmlファイルを静的に提供した。コードを2つのファイルに分割すると、それ以上は機能しません – javascripting

答えて

1
  1. あなたは両方のファイルvar app = express()二つの別々の特急サーバを宣言したので、あなたの例では、少なくとも正常に動作しません。
  2. このコードは、通常、このようなサーバーの初期化が1つのファイルに格納されるため、エクスポート/要求の練習には最適ではありません。

しかし、いずれにせよ、あなたはこのようにで行いましょう、この例を使用し、それを動作させる希望の場合:

./ index.js

'use strict' 

var express = require('express'); 
var setupServing = require('./setupServing.js'); //import our function 
var PORT = process.env.PORT || 1337; 

var app = express(); //create express app 
setupServing(app); //call imported function to config our app 

app.listen(PORT, function() { //start 
    console.log('Server is listening!'); 
}) 

./ setupServing.js

var express = require('express'); 
var path = require('path'); 
//export function which can configure static serve for app 
module.exports = function(app) { //take app as an argument 
    app.use(express.static(path.join(__dirname, '../public'))); 
} 

この例はまだ論理的ではなく、実際のプロジェクトでこのようなコードに直面するとは思われませんが、とにかくそれが動作して、nodejsでのエクスポート/要求が実証されます。

+0

ありがとうございました!ミドルウェアのルートを分離するのは悪い習慣なのですが、私は自分のサーバーをどこから始めるのですか?私は実際にこれをどこかに見て、出発点(サーバーの起動のみ)を1つのファイルに残しておいて他の場所。また、ルートファイルが必要でしたが、export(module.exports = app)した場合、index.jsファイルを必要とせず、app.use ...のアプリを使用できません。あなたの作品はうまくいくので、私はそれをすべて理解しようとしています。ありがとう:) – javascripting

+0

あなたのすべてのルートとミドルウェアを別々のフォルダに保存するのは良い方法です。次に、ミドルウェアを使用してファイルをルーティングし、特定のミドルウェアを特定のルートに使用する必要があります。 あなたの例は実際にルートを持っていません。これは単に 'public'ディレクトリからファイルを提供している静的なサーバです。 –

+0

さらに詳しい例と説明を確認してください: https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/routes –

関連する問題