在 Electron 的渲染器中 export/define 函数的正确方法
Correct way to export/define functions in Electron's Renderer
我有一个 JS 文件,我正在使用 require
(例如:const myJS = require("./pathToMyJS/myJS");
)
myJS.js
的内容:
module.exports = {
mFunc: function mFunc(param1) {
...
}
};
而且我可以在 app.js
中使用 mFunc
作为 myJS.mFunc(param1);
& 一切都很好。
然后,我尝试对“renderer”JS 执行相同的过程。所以我的 renderer.js
现在导入 const myOtherJS = require("./myJS/myOtherJS");
,其中另一个 JS 文件遵循与 myJS
.
完全相同的 module.exports
逻辑
并且根 HTML (app.html
) 将 renderer
声明为 <script defer src="./renderer/renderer.js"></script>
。
但是在启动时,我得到:
Uncaught TypeError: Cannot set property 'exports' of undefined
at renderer.js? [sm]:34
在网上搜索,我发现这个 提到可以使用 AMD 方式而不是 commonJS 方式。所以我尝试了以下方法:(不确定这在语法上是否正确!)
define(
["renderer"],
function rFunc(param1) {
... }
)
但是失败了:
Uncaught ReferenceError: define is not defined
那么在渲染器中使用它们时定义导出函数的正确方法是什么?到目前为止,我一直在做的只是在它们自己的 JS 文件中编写函数(例如:function func1() { ...}
)并在 app.html
中将所有这些文件声明为 <script defer src="./funcFile1.js"></script>
。
默认情况下node.js不提供AMD。它被 Require.js 和其他 FW 使用。这是关于如何将它与节点一起使用的 link:
原来,我只是导出不正确。 modules.export
是失败点,因为 modules
在 renderer
上未定义。
相反,如果我执行以下操作来导出单个函数:
// ./myJS/myOtherJS.js
export function rFunc() { ...}
然后导入到我的 renderer.js
中:
import { rFunc } from './myJS/myOtherJS';
rFunc();
一切如我所料。
关于模块的 Google Developers Primer 有助于理解概念。
我有一个 JS 文件,我正在使用 require
(例如:const myJS = require("./pathToMyJS/myJS");
)
myJS.js
的内容:
module.exports = {
mFunc: function mFunc(param1) {
...
}
};
而且我可以在 app.js
中使用 mFunc
作为 myJS.mFunc(param1);
& 一切都很好。
然后,我尝试对“renderer”JS 执行相同的过程。所以我的 renderer.js
现在导入 const myOtherJS = require("./myJS/myOtherJS");
,其中另一个 JS 文件遵循与 myJS
.
module.exports
逻辑
并且根 HTML (app.html
) 将 renderer
声明为 <script defer src="./renderer/renderer.js"></script>
。
但是在启动时,我得到:
Uncaught TypeError: Cannot set property 'exports' of undefined
at renderer.js? [sm]:34
在网上搜索,我发现这个
define(
["renderer"],
function rFunc(param1) {
... }
)
但是失败了:
Uncaught ReferenceError: define is not defined
那么在渲染器中使用它们时定义导出函数的正确方法是什么?到目前为止,我一直在做的只是在它们自己的 JS 文件中编写函数(例如:function func1() { ...}
)并在 app.html
中将所有这些文件声明为 <script defer src="./funcFile1.js"></script>
。
默认情况下node.js不提供AMD。它被 Require.js 和其他 FW 使用。这是关于如何将它与节点一起使用的 link:
原来,我只是导出不正确。 modules.export
是失败点,因为 modules
在 renderer
上未定义。
相反,如果我执行以下操作来导出单个函数:
// ./myJS/myOtherJS.js
export function rFunc() { ...}
然后导入到我的 renderer.js
中:
import { rFunc } from './myJS/myOtherJS';
rFunc();
一切如我所料。
关于模块的 Google Developers Primer 有助于理解概念。