Express App初始化后,无法添加对象module.exports

After Express App is initialized, I can't add objects to module.exports

server.js

module.exports.a = 'abc';
var app = expressAppConstructor(db);
module.exports.b = 'xyz';
console.log(JSON.stringify(module.exports)); // --> {"a":"abc","b":"xyz"}

exportsLog.js

var io = require('./server');
console.log(JSON.stringify(io)); // --> {"a":"abc"} Note b: xyz is missing

如何在快捷应用程序初始化后将b添加到module.exports

我在 mean.js 堆栈中,上面提到的文件是 server.jsexpressConstructorFunctionrequire(./config/express.js)

查看server.js, config/express.js的原始内容

在使用您的实际应用进行调试后,我发现了第二个设置不起作用的原因。它确实有效,但是当您初始化 Express 应用程序时,您需要在其中一个路由中使用服务器文件。

node server.js -> exports.a = 'abc'; -> expressAppConstructor ->

config.getGlobbedFiles('./app/routes/**/*.js').forEach(function(routePath) {
  require(path.resolve(routePath))(app);
});

-> 在通过上面加载的一个路由文件中,这个 运行s: require('server.js'); -> 现在终于堆栈 returns 到服务器文件并执行:exports.b='xyz';,但是你的路由文件已经需要并缓存了该模块。

我真的很担心您每次需要文件时都会一遍又一遍地启动服务器。虽然我认为它没有中断,因为节点缓存了需要的模块,所以逻辑不是 运行ning,但是缓存服务器模块上的 exports 只有第一个分配,因为它是你需要的在第二次分配给 exports 之前路由文件甚至发生。当您的路由文件尝试加载服务器文件时,它只有 运行 到应用程序初始化行。在你的路由文件中需要它之后添加到 exports 的任何东西显然不会进入导出的数据。