从 Electron 中所需的 JS 模块访问父变量
Posted
技术标签:
【中文标题】从 Electron 中所需的 JS 模块访问父变量【英文标题】:Access parent variables from required JS Modules in Electron 【发布时间】:2020-08-06 17:55:32 【问题描述】:请耐心等待,这里有点二人组。 首先,我认为如果我的主要 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()
语句只有在我给出
相对于应用程序根目录而不是文件的完整路径
要求。
谁能解释一下为什么 required 模块可以访问 Electron 中 requirer 的属性?
谁能解释为什么我的 require 语句只适用于 Electron 中的根相对路径?
谢谢大家:)
编辑
这一切都发生在渲染器中。使用标准<script>
标记将主 JS 加载到我的 index.html 中。然后它需要那里的模块。
【问题讨论】:
这是渲染器的代码吗? @tpikachu - 是的(已编辑我的问题)。主脚本加载到 index.html 我明白了。使用require
表示您将在浏览器中使用 Node API
为此,您应该创建 nodeIntgeartion 为 true 的 browserWindow
点赞***.com/questions/60227586/…
【参考方案1】:
经典的简单易懂的问题。
我在 html 中包含我的主脚本时,我只需要给标签一个 type="module"
。我想如果没有这个,脚本只是加载到页面中而没有任何模块化包装,这就是为什么该变量可以全面使用。
在我的index.html
中,脚本标签现在看起来像这样..
<script type="module" src="js/app.js"></script>
【讨论】:
以上是关于从 Electron 中所需的 JS 模块访问父变量的主要内容,如果未能解决你的问题,请参考以下文章
如何从另一个表中获取数据并插入到 EF Core 中所需的表中