我有一个JS文件,正在使用app.js
(例如:require
)将其导入到Electron的“ main”(或后台进程)const myJS = require("./pathToMyJS/myJS");
中
myJS.js
的内容:
module.exports = {
mFunc: function mFunc(param1) {
...
}
};
我可以将mFunc
中的app.js
用作myJS.mFunc(param1);
,一切都很好。
然后,我尝试对“ renderer” JS执行相同的过程。因此,我的renderer.js
现在导入了const myOtherJS = require("./myJS/myOtherJS");
,其中另一个JS文件遵循与module.exports
完全相同的myJS
逻辑。
并且根HTML(app.html
)将renderer
声明为<script defer src="./renderer/renderer.js"></script>
。
但是在启动时,我得到了:
Uncaught TypeError: Cannot set property 'exports' of undefined
at renderer.js? [sm]:34
在网上搜索时,我遇到了这个answer,其中提到可以使用AMD方式代替commonJS方式。因此,我尝试了以下操作:(不确定这在语法上是否正确!)
define(
["renderer"],
function rFunc(param1) {
... }
)
但是失败了:
Uncaught ReferenceError: define is not defined
那么在渲染器中使用要导出的函数时,正确的定义方式是什么?到目前为止,我所做的只是将函数写入自己的JS文件(例如:function func1() { ...}
)中,并将app.html
中的所有这些文件都声明为<script defer src="./funcFile1.js"></script>
。>
答案 0 :(得分:0)
默认情况下,node.js不提供AMD。由Require.js和其他FW使用。以下是有关如何将其与节点一起使用的链接:
答案 1 :(得分:0)
结果是,我只是导出错误。 modules.export
是失败点,因为modules
上的renderer
未定义。
相反,如果我执行以下操作以导出单个功能:
// ./myJS/myOtherJS.js
export function rFunc() { ...}
然后像这样导入到我的renderer.js
中:
import { rFunc } from './myJS/myOtherJS';
rFunc();
事情如我最初预期的那样。
关于模块的Google Developers Primer有助于理解概念。