这看起来确实很愚蠢,但是我需要帮助将一些源代码导入电子渲染器进程中。
我有一个电子应用程序: index.html(使用标签加载window.js) -index.js -window.js -有用的功能.js
在window.js
中,我想从useful_functions.js
导入一些函数,因此我尝试了以下操作:
// fails with: Uncaught SyntaxError: Unexpected identifier
import { very_useful } from './useful_functions.js';
// fails with: Uncaught ReferenceError: require is not defined
const { very_useful } = require('./useful_functions.js');
// fails with: Uncaught ReferenceError: require is not defined
require('electron').remote.require('./useful_functions.js')
我也尝试了nodeIntegration
标志,但这也没有帮助
注意:我不是在尝试导入npm模块,而是将自己的代码导入到它旁边的另一个文件中。
我正在寻找示例,但是我只找到带有基本文件的超小样本。 (或者像原子之类的大型应用程序需要我花点时间才能弄清楚)
我还没有为该项目设置webpack,但是我敢肯定有一种更简单的方法可以完成这项非常基本的任务...
感谢您的帮助。
答案 0 :(得分:0)
在index.html
中,使用require()
而不是向window.js
加载标签,即替换:
<script src="window.js"></script>
具有:
<script>require('./window.js');</script>
然后,在window.js
中,以下语句也应该起作用:
const { very_useful } = require('./useful_functions.js');
请注意,无论如何,传递给nodeIntegration: true
的选项中都需要new BrowserWindow()
:
webPreferences:
{
nodeIntegration: true
}
请参阅:
通过以下方式将功能和对象添加到模块的根目录中 在特殊导出对象上指定其他属性。
模块本地的变量将是私有的,因为模块是 由Node.js包装在函数中(请参见模块包装器)。
在执行模块的代码之前,Node.js将其包装为 函数包装,如下所示:
(函数(导出,需要,模块,__ filename,__ dirname){
//模块代码实际上位于此处
});