【问题标题】:express nodejs, modularizing appexpress nodejs,模块化应用
【发布时间】:2017-12-02 18:09:38
【问题描述】:

我有一个包含以下代码的快速应用程序:

App.js

const express = require('express');
const routes = require('./routes')

const app = express();


app.listen(3000, () => {
    console.log('server started on port 3000')
})

module.exports = app;

Routes.js:

const app = require('./app.js')

app.get('/', (req, res) => {
    res.send('Hello world');
})

module.exports = {
    app
};

当我在 nodeJS 中运行 app.js 时,我得到了错误: App.get 不是函数

  1. 为什么我的应用程序对象没有导入到 routes.js 文件中?
  2. 如何以不同的方式构造它,以便将这段代码模块化?

【问题讨论】:

  • 你有循环依赖,Routes.js需要App.js,App.js需要Routes.js,这样不行。
  • 正如@PatrickHund 提到的,这是坏的。
  • 我删除了 routes.js 文件中的导出,但仍然损坏,我该如何修复?

标签: javascript node.js express


【解决方案1】:

您不能在不是主文件本身的文件中使用 app。 改为这样做:

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

router.get('/', (req, res) => {
    res.send('Hello world');
})

module.exports = {
    router
};

然后在你的 app.js 中这样做:

var routeFile = require('Routes.js');
app.use('/', routeFile);

【讨论】:

    猜你喜欢
    • 2014-06-29
    • 2017-01-23
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    相关资源
    最近更新 更多