javascript - 从 Electron 中所需的 JS 模块访问父变量

标签 javascript electron require electron-forge

忍受我,这里是一个两方的人。
首先,我是否正确地认为,如果我的主要 JS 是这样设置的..

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 中的根相对路径?

    谢谢大家:)

    编辑
    这一切都发生在渲染器中。使用标准 <script> 将主 JS 加载到我的 index.html 中。标签。然后它需要那里的模块。

    最佳答案

    经典的简单易懂的问题。

    在 html 中包含我的主脚本的地方,我只需要给标签一个 type="module" .我想如果没有这个脚本只是加载到页面中而没有任何模块化 package ,这就是为什么该变量可以全面使用。

    在我的 index.html脚本标签现在看起来像这样..
    <script type="module" src="js/app.js"></script>

    关于javascript - 从 Electron 中所需的 JS 模块访问父变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61386691/

    相关文章:

    javascript - Backbone.Marionette.ItemView 渲染后元素未准备好?

    javascript - Angular 模块错误

    HTML:网格面板高度不一致?

    javascript - 无法将一个脚本导入另一个脚本

    javascript - 如果我将类的模块传递给构造函数而不是需要它,如何创建类的实例?

    c++ - 模板类中非模板成员函数的 requires 子句

    javascript - jQuery Mobile 禁用某些标签的增强功能?

    javascript - 在 jquery 插件中维护状态

    macos - 设计序言 Mac OS X Mas

    PHP Require() 不在父脚本范围内执行所需文件