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.js
,expressConstructorFunction
是 require(./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
的任何东西显然不会进入导出的数据。
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.js
,expressConstructorFunction
是 require(./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
的任何东西显然不会进入导出的数据。