Javascript 从Electron中所需的JS模块访问父变量
请容忍我,这里有点像两个人。 首先,如果我把我的主JS设置成这样,我的想法是否正确Javascript 从Electron中所需的JS模块访问父变量,javascript,electron,require,electron-forge,Javascript,Electron,Require,Electron Forge,请容忍我,这里有点像两个人。 首先,如果我把我的主JS设置成这样,我的想法是否正确 const myModule = require('./myModule'); let parentVar = 'foo'; myModule.test(); module.exports = { test: ()=>{ console.log(parentVar); } } ..我设置了所需的模块,如下 const myModule = require('./myMod
const myModule = require('./myModule');
let parentVar = 'foo';
myModule.test();
module.exports = {
test: ()=>{
console.log(parentVar);
}
}
..我设置了所需的模块,如下
const myModule = require('./myModule');
let parentVar = 'foo';
myModule.test();
module.exports = {
test: ()=>{
console.log(parentVar);
}
}
…当主脚本调用myModule.test()
时,它应该抛出一个错误,因为它无法访问parentVar
?
这是我在传统web构建中使用模块的经验和理解
现在,我正在构建一个Electron应用程序(使用Electron Forge),在这里我可以调用myModule.test()
,它成功了,似乎可以访问主脚本中声明的变量
我试图理解这是为什么,我可以看到两个可能相关也可能无关的区别
require()
语句只有在给出
相对于应用程序根目录而不是执行操作的文件的完整路径
需要这一切都发生在渲染器中。正在使用标准的
标记将主JS加载到my index.html中。然后,它需要从那里获得模块。当您知道如何解决问题时,经典很容易
在html中包含主脚本的地方,我只需给标记一个type=“module”
。我猜如果没有这个,脚本只是加载到页面中,没有任何模块包装,这就是为什么变量可以全面使用的原因
在我的index.html
中,脚本标记现在如下所示
const myModule = require('./myModule');
let parentVar = 'foo';
myModule.test();
module.exports = {
test: ()=>{
console.log(parentVar);
}
}
当您知道如何解决这个问题时,经典很容易
在html中包含主脚本的地方,我只需给标记一个type=“module”
。我猜如果没有这个,脚本只是加载到页面中,没有任何模块包装,这就是为什么变量可以全面使用的原因
在我的index.html
中,脚本标记现在如下所示
const myModule = require('./myModule');
let parentVar = 'foo';
myModule.test();
module.exports = {
test: ()=>{
console.log(parentVar);
}
}
这是渲染器的代码吗?@tpikachu-是(编辑了我的问题)。主脚本加载到index.htmlI中,请参阅。要使用require
意味着您将在浏览器中使用节点API。为此,您应该创建带有节点传动装置的浏览器窗口,如图所示。这是渲染器的代码吗?@tpikachu-是(已编辑我的问题)。主脚本加载到index.htmlI中,请参阅。要使用require
意味着您将在浏览器中使用节点API。为此,您应该创建具有如下所示的nodeIntGearation的browserWindow