我正在做一个expressJS项目。我有一个名为send_email.js
的路由文件,我想从两个不同的地方使用该文件的一部分。这些地方index.js
和user.js
. 所以我为index.js
和users.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.js
和deneme2.js
相互需要,express.js
需要deneme1.js
和deneme2.js
。
您是否在send_mail.js
文件中导出?您应该导出要重用的任何函数。并在您需要的地方使用导入。而不是要求。 供参考:MDN
我已经意识到我的问题是我的路由文件之间的"循环依赖关系"。这是一种设计错误。并且有一个关于它的堆栈溢出问题/解决方案: 如何处理节点中的循环依赖关系