如何在节点js中正确导出和要求?

How to correctly export and require in node js?

我在 node/express 中阅读了有关 export/require 的教程,想知道是否有人可以用我的示例向我解释: 为什么我在 app.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')));
    }
  1. 您的示例将无法正常工作,至少因为您在两个文件中声明了两个单独的快速服务器 var app = express()
  2. 这段代码不是最适合在exporting/requiring中练习的,因为这样的服务器初始化通常放在一个文件中。

但是无论如何,如果您想使用这个示例并让它工作,让我们以这种方式进行:

./ 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 中运行并演示 exporting/requiring。