将我自己的文件导入电子渲染器进程

时间:2019-09-07 01:06:10

标签: electron

这看起来确实很愚蠢,但是我需要帮助将一些源代码导入电子渲染器进程中。

我有一个电子应用程序: 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,但是我敢肯定有一种更简单的方法可以完成这项非常基本的任务...

感谢您的帮助。

1 个答案:

答案 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){
  //模块代码实际上位于此处
  });