【问题标题】:How to correctly export and require in node js?如何在节点 js 中正确导出和要求?
【发布时间】:2018-03-11 17:05:39
【问题描述】:

我在 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')));
    }

【问题讨论】:

  • 究竟是什么不起作用?您希望使用哪个 URL 以及尝试时会发生什么?
  • 当我将整个代码放在一个文件中时,它起作用了——我通过 app.use 静态地提供了位于我的公共文件夹中的 index.html 文件。当我将代码分成 2 个文件时,它不再起作用了

标签: javascript node.js express require


【解决方案1】:
  1. 您的示例至少不能正常工作,因为您在两个文件var app = 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 中的导出/请求。

【讨论】:

  • 谢谢!您能否向我解释一些事情-为什么将中间件路由和启动服务器的位置分开是不好的做法?我实际上在某处看到了这一点,并认为将起点(仅启动服务器)放在一个文件中并休息也许很好别处。此外,您需要路由文件,但如果我导出 (module.exports = app),那么我不能需要 index.js 文件并将 app 用于 app.use ...吗?你的作品,所以我只是想了解这一切。谢谢:)
  • 最好将所有路由和中间件存储在单独的文件夹中。然后,您需要中间件来路由文件并将特定中间件用于特定路由。您的示例实际上没有任何路线。它只是一个从“公共”目录提供文件的静态服务器。
  • 查看这里以获取更多示例和解释:developer.mozilla.org/en-US/docs/Learn/Server-side/…
猜你喜欢
  • 2021-10-10
  • 1970-01-01
  • 2016-08-17
  • 2021-12-31
  • 2018-11-10
  • 2020-07-05
  • 2015-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多