2017-09-29 113 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

究竟哪些方法無效?你期望什麼網址工作,當你嘗試它時會發生什麼? – jfriend00

+0

當我只有一個文件的整個代碼,它的工作原理 - 我靜態地通過app.use服務於我的公共文件夾中的index.html文件。當我將代碼分成2個文件時,它不再工作 – javascripting

回答

1
  1. 你的榜樣將無法正常工作,至少是因爲你宣佈這兩個文件var app = express()兩個獨立Express服務器。
  2. 此代碼並非最適合在導出/需求中練習,因爲此類服務器初始化通常放置在一個文件中。

但無論如何,如果你想用這個例子,並使其發揮作用,讓我們做這樣:

./ 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

謝謝!你可以向我解釋一些事情 - 爲什麼分離中間件路線和我的服務器啓動位置是不好的做法?我實際上看到了這個地方,認爲在一個文件中有起點(僅啓動服務器)很好,並且休息別處。此外,你需要的路線文件,但如果我導出(module.exports =應用程序),然後我不能要求index.js文件,並使用應用程序的app.use ...?你的作品,所以我只是想明白這一切。感謝:) – javascripting

+0

這是不錯的做法,將所有路線和中間件存儲在單獨的文件夾中。然後,您需要中間件來路由文件,並使用特定的中間件來執行特定的路由。 你的例子實際上沒有任何路線。它只是一個靜態服務器,它提供來自「公共」目錄的文件。 –

+0

查看更多示例和解釋: https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/routes –