app.js
app.get('/save', function(req,res){
var switchInput = {
sw1: req.query.switch1,
sw2: req.query.switch2,
sw3: req.query.switch3,
sw4: req.query.switch4,
sw5: req.query.switch5,
sw6: req.query.switch6,
}
console.log(switchInput);
module.exports = switchInput
res.send(switchInput);
});
simulate.js
var mongoose = require('mongoose');
var suit = require('../app')
...
function batteryLife(t){
var elapsed = Date.now() - t;
t_remaining = fullTime - elapsed;
t_battery = secondsToHms(Math.floor(t_remaining/1000));
//console.log(Math.floor(elapsed/1000) + ' s');
console.log(suit.sw1);
return t_battery;
};
控制台日志:
{ sw1: 'true',
sw2: 'true',
sw3: 'true',
sw4: 'true',
sw5: 'true',
sw6: 'true' }
--------------Simulation started--------------
undefined
undefined
undefined
undefined
--------------Simulation stopped--------------
当我尝试从其他js文件访问这些值时,它们将打印为未定义状态,我正在使用邮递员模拟值
这些值将从此处记录,但在其他js文件中未打印
有没有办法纠正这个问题?我不确定自己做错了什么 这些值将加载到“ inputSwitch”中,但不会在simulate.js端显示出来
答案 0 :(得分:0)
您要导出的事件不是一个好主意。相反,您可以做的是在另一个需要使用值的文件中调用一个函数。
示例
app.js
const simulate = require('./simulate');
app.get('/save', function(req,res){
var switchInput = {
sw1: req.query.switch1,
sw2: req.query.switch2,
sw3: req.query.switch3,
sw4: req.query.switch4,
sw5: req.query.switch5,
sw6: req.query.switch6,
}
simulate(switchInput);
res.send(switchInput);
});
simulate.js
module.exports = function(input){
//have all your functions and code that require input here
function foo(){...}
function bar(){...}
}
答案 1 :(得分:0)
首先,在使用您喜欢的Web服务器(如Express)时,您要求aka(req)将/可能在中间件之间流动,然后到达您的特定端点。这意味着您的req参数可以随时访问,这可以帮助您实现特定的代码逻辑middleware-the-core-of-node-js-apps。
我同意vibhor1997a,您不应在此处导出内容,基本上,您只能在文件末尾module.exports
“东西”,而不是在运行时的东西。
如果您确实想在另一个文件中处理switchInput
,可以这样做:
switchInput
作为参数example引发了一个事件