我正在使用express模块做一些简单的变量传递。
以下是我的代码
app.get('/dosomething', function(req, res){
var myText = req.query.mytext; //mytext is the name of your input box
console.log(myText);
var googleSent = require("./dosomethingelse");
});
基本上,我有一个html表单,它会在提交时向NodeJS发送一些文本。
它成功进入NodeJs,我可以安慰它。但是我无法在 dosomethingelse.js 中使用该变量,我尝试使用module.export
但我意识到这并不适合我的情况。
那么有没有解决方案,或者我没有以正确的方式做到这一点?
让我们以另一种方式提出这个问题:
app.get('/dosomething', function(req, res){ var myText = req.query.mytext; //mytext is the name of your input box console.log(myText); module.exports.myText = myText; }); app.get('/dosomething2', function(req, res){ console.log(app.mytext) });
假设我在第一个app.get
得到了我的结果,我希望 dosomething2 能够控制相同的结果,我尝试了上面的代码,但似乎它对我不起作用
答案 0 :(得分:2)
定义全局变量并在任何文件中使用
app.get('/dosomething', function(req, res){
global.myText = req.query.mytext;
console.log(myText);
var googleSent = require("./dosomethingelse");
});
你的dosomethingelse文件中的:
module.exports=function(){
console.log('from file',global.myText);
}
答案 1 :(得分:0)
你应该使用一个普通的容器。您可以使用创建容器并将其传递给dosomethingelse
或使用单身
// singleton.js
class Singleton {
set myText(value) {
this._myText = value;
}
get myText() {
return this._myText;
}
}
module.exports = new Singleton();
在您的应用中
// app.js
const singleton = require('./singleton');
app.get('/dosomething', function(req, res) {
singleton.myText = req.query.myText;
// ....
});
// dosomethingelese.js
const singleton = require('./singleton');
console.log(singleton.myText);