我有这样的文件夹构造器
.
├── models
│ └── System.js
└── src
├── app.js
├── index.js
└── routes
├── lemon
│ ├── auth
│ │ └── index.js
│ └── index.js
└── index.js
。
/models/System.js
class System {
constructor() {
this.test = null;
}
}
module.exports = System
。
/src/app.js
const express = require("express");
const _System = require("../models/System");
const app = express();
var System = new _System();
System.test = 1;
//..... other codes
。
/src/routes/lemon/auth/index.js
const express = require("express");
const _System = require("../../../../models/System");
const router = express.Router();
console.log(_System.test); //returns null
router.get('/', (req, res) => {
res.send("Hello World");
});
module.exports = router;
。
我的文件夹构造函数是这样的,我试图将在 /app.js 中定义的 System.test = 1 值共享到 / routes / lemon / auth / index.js 。 但是我无法做到这一点,它总是返回null。
反正有和子路线共享同一个类的初始化吗?
PS:我知道我的代码不正确,我已经搜索了很多东西。我目前对英语资源不太了解,但我确实进行了搜索。
答案 0 :(得分:0)
这不起作用,因为System.js
返回一个类,而不是实例或对象。因此,在var System = new _System(); System.test = 1;
中执行app.js
时,该实例在应用程序模块本地,并且不与路由共享。
如果要在不同模块之间共享某种配置文件,可以将System
模块定义为一个简单对象:
'use strict' // <-- this is good practice to be more rigoreous
const System = {
test: 1
};
module.exports = System;
答案 1 :(得分:0)
不是最优雅或可扩展的,但是;
global.System = new _System();
然后您可以在任何地方使用System
。