Javascript 从Electron中所需的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

请容忍我,这里有点像两个人。 首先,如果我把我的主JS设置成这样,我的想法是否正确

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()
,它成功了,似乎可以访问主脚本中声明的变量

我试图理解这是为什么,我可以看到两个可能相关也可能无关的区别

  • 我没有使用webpack/babel,所以JS是一种我不喜欢的原始形式 通常与同事一起工作
  • 我的
    require()
    语句只有在给出 相对于应用程序根目录而不是执行操作的文件的完整路径 需要
  • 有人能解释为什么所需的模块可以访问Electron中需求者的属性吗

    有人能解释为什么我的require语句只适用于Electron中的根相对路径吗

    谢谢大家:)

    编辑
    这一切都发生在渲染器中。正在使用标准的
    标记将主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