我尝试通过创建具有不同功能的不同模块来组织我的项目。但为了有效,我需要这些函数来更新我的" app.js"文件。
下面的代码应该更新并记录变量" name"一旦我运行" myFunction"位于" custom_module.js"文件。 但我得到的是:
Hello undefined
app.js
var name;
var module = require('./custom_module.js');
module.myFunction();
console.log("Hello " + name);
custom_module.js
var myFunction = function(){
name = "Test"
}
module.exports.myFunction = myFunction;
有谁知道如何解决这个问题?
答案 0 :(得分:2)
您可以将其附加到全局对象...这是节点中的global
和浏览器中的window
。
// app.js
window.name = 'Foo';
// custom_module.js
var myFunction = function(){
window.name = "Bar";
}
P.S。不要这样做。共享的全局变量(通常)总是邪恶的。
答案 1 :(得分:1)
目前,您定义的name
范围仅在函数内部。您需要将范围移到外面。像
app.js
var module = require('./custom_module.js');
var name = module.myFunction();
console.log("Hello " + name);
custom_module.js
var myFunction = function(){
return "Test";
}
module.exports.myFunction = myFunction;