expressJS需要一个文件,它有来自两个不同地方的路由对象不起作用

问题描述 投票:-2回答:2

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

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

user.js给我一个错误,因为send_email未定义。然后我只是从index.js删除相同的行,一切都很顺利。我可以在user.js中访问send_mail,这是我的期望。

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

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


// ------------------------ index.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});

// -------------- experiment1.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;

// ------------------ experiment2.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

javascript node.js express require
2个回答
0
投票

你在send_mail.js文件中导出了吗?您应该导出要重用的任何功能。并在任何需要的地方使用import。而不是要求。供参考:MDN


0
投票

我意识到我的问题与我的路径文件之间的“循环依赖”有关。这是一种设计错误。并且有一个关于它的stackoverflow问题/解决方案:how-to-deal-with-cyclic-dependencies-in-node-js

© www.soinside.com 2019 - 2024. All rights reserved.