【问题标题】:Node.js: how to resolve a circular dependencyNode.js:如何解决循环依赖
【发布时间】:2021-04-26 09:02:02
【问题描述】:

我知道这个问题已经被问过多次,但我的情况很具体:

我有三个文件,一个controller.jsrouter.js 和一个app.js

router.js 导入 controller.js, app.js 导入 router.js

我需要从app.js 导入一些东西到controller.js,我该怎么做?

【问题讨论】:

  • 您不应该将某些内容从应用程序导入控制器。如果您可以将所需的代码从 app.js 移动到另一个文件,并将该文件导入到 controller.js 中,则可以解决问题。
  • 是的,但是需要从应用程序导入的功能需要应用程序中存在的代码,而需要路由器中的代码。
  • 这个设计得不好。如果您设计了这个,请尝试完成@Lian 的建议。

标签: javascript node.js circular-dependency


【解决方案1】:

您最好将代码重组为不需要它。也许创建一个使用其他两个来完成您需要的第三个类,如果您必须使用app.js 中的函数,您可以这样做:

在要求您之前应该导出 express()functions

app.js

const express = require("express");
const func = () => {
  console.log("I'm in App");
};
var exportFiles = module.exports = {
  app: express(),
  func: func,
};
var { app } = exportFiles;
const fs = require("fs");
const path = require("path");
const bodyParser = require("body-parser");

app.listen(8080, () => {
  console.log("server port is 8080")
})

contolers.js

const {func} = require('../app');

当您在控制器中调用 func() 时,结果是:

func() // I'm in App

【讨论】:

    猜你喜欢
    • 2012-03-15
    • 2016-09-21
    • 2020-11-12
    • 2011-08-16
    相关资源
    最近更新 更多