expressJS需要一个具有来自两个不同位置的路由对象的文件不起作用



我正在做一个expressJS项目。我有一个名为send_email.js的路由文件,我想从两个不同的地方使用该文件的一部分。这些地方index.jsuser.js. 所以我为index.jsusers.js添加了以下行:

const send_email = require("./send_mail");

但是user.js给了我一个错误,因为send_email是未定义的。然后我只是从index.js中删除同一行,一切都很好。我可以在用户.js中达到send_mail,这就是我所期望的。

我是否忽略了在 expressJS 中需要文件的一些事情?我可以在其他项目中有效地使用这种技术。是否有 expressJS 特定的事情导致此错误?

我在另一个小项目中创建了相同的情况,其代码如下:


------------------------索引.js -----------------------

const express = require("express");
const app = express();
/* if coment this two line every thing goes fine */
const mylog = require("./deneme1").mylog;
mylog();
/* if coment this two line every thing goes fine */

const yourlog = require("./deneme2").yourlog;
const route = require("./deneme1").route;
console.log('route :', route);

yourlog();
app.get("/", (req, res)=>{
res.send("OK!");
})

app.listen(3000, () => { "listening on "+3000});

--------------deneme1.js -------------------------

const express = require("express");
const route = express.Router();
const yourlog = require("./deneme2").yourlog;
console.log('yourlog mmm:', yourlog);
route.get("/deneme", function(req, res){
mylog();
res.send("OK!");
});
function mylog () {
console.log("mylog in deneme1.js");
};
module.exports.route = route;
module.exports.mylog = mylog;

------------------deneme2.js-----------------

const express = require("express");
const route = express.Router();
const mylog = require("./deneme1").mylog;
console.log('mylogxx :', mylog);
function yourlog(){
console.log("yourlog deneme2");
mylog();
console.log("----");
}
module.exports.yourlog = yourlog;

deneme1.jsdeneme2.js相互需要express.js需要deneme1.jsdeneme2.js

您是否在send_mail.js文件中导出?您应该导出要重用的任何函数。并在您需要的地方使用导入。而不是要求。 供参考:MDN

我已经意识到我的问题是我的路由文件之间的"循环依赖关系"。这是一种设计错误。并且有一个关于它的堆栈溢出问题/解决方案: 如何处理节点中的循环依赖关系

最新更新