1

忍受我,这里是一个两方的人。首先,我是否正确地认为,如果我的主要 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()它并成功,似乎可以访问主脚本中声明的变量。

我试图理解为什么会这样,并且我可以看到两个可能相关或不相关的差异。

  1. 我没有使用 webpack/babel,所以 JS 是我通常不使用的原始形式。
  2. require()仅当我给出相对于应用程序根目录而不是执行要求的文件的完整路径时,我的陈述才有效。

任何人都可以解释为什么所需的模块可以访问 Electron 中需求者的属性吗?

谁能解释为什么我的 require 语句仅适用于 Electron 中的根相对路径?

谢谢大家:)

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

4

1 回答 1

0

经典的简单易懂的问题。

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

在我index.html的脚本标签现在看起来像这样..

<script type="module" src="js/app.js"></script>

于 2020-04-24T15:56:24.760 回答