<script> require('renderer.js')</script>-不连接js文件

时间:2019-07-19 15:48:03

标签: javascript html electron ipc require

使用Electron,我正在尝试在main和renderer之间组织IPC。如指示所述,我应该将脚本(请参见标题)添加到index.html。但它看起来不像是已加载。 rendeder.js中的任何内容都不会执行。

这是本教程https://www.brainbell.com/javascript/ipc-communication.html中的内容,它是Internet上最详细的主题。其他人只是在文章中跳过了太多信息,以至于学习者根本无法在应用程序中复制它。

我尝试过:

<script> 
    require('renderer.js')
</script>

<script>
    require('./renderer.js')
</script>

<script src='renderer.js'>
</script>

类似。

2 个答案:

答案 0 :(得分:1)

所以让我展示我的工作,也许会有所帮助。

创建窗口的代码。请注意webPreferences设置

app.on('ready', function () {
  mainWindow = new BrowserWindow({
    show: false,
    width: 1024,
    height: 768,
    backgroundColor: '#2C3E50',
    center: true,
    webPreferences: {
      nodeIntegration: true,
      devTools: true
    }
  })

没有devtools,您将看不到错误输出或检查内容。还有其他方法可以通过菜单和键盘命令打开devTools

然后,假设您已通过npm安装了脚本或lib,则可以执行以下操作而无需指定路径,否则将需要相对路径

const THREE = require('three')

答案 1 :(得分:1)

我遇到了同样的问题。

首先,请确保在启动应用程序时打开nodeIntegration:

app.on('ready', _ => {
    mainWindow = new BrowserWindow({
        title: "My Electron App",
        backgroundColor: '#FFF',
        height: 800,
        width: 1200,
        center: true,
        webPreferences: {
            nodeIntegration: true // works on main window only
        }
    })

然后,引用this answer

使用requiresrc=方法都可以玩多个选项。请参阅下面的其他行内注释。

<html>
  <head>
    <!-- make sure you have the semicolon after the require -->
    <!-- and make sure NOT to include the .js extension -->
      <script>require('./renderer');</script>
    <!-- make sure you include the extension -->
      <script src="./renderer.js" ></script>
  </head>
  <body>
    <!-- Put HTML first to avoid blocking -->
    <!-- All same options as in head work here, but shouldn't block -->
    <!-- In addition, async and defer might do something -->
    <!-- async should run script asynchronously, and defer wait until DOM loads -->
      <script src="./renderer.js" async></script>
      <script src="./renderer.js" defer></script>
  </body>
  <!-- scripts put here seems intermittent which runs first -->
</html>
<!-- scripts put here seems intermittent which runs first -->

有些人会阻止HTML加载,直到脚本运行为止(我想如果在head标记中,无论如何),而另一些人则似乎随机认为HTML是否会在脚本运行之前加载。我在renderer.js中使用了一个警告框进行了测试,如果该警告框首先运行,它将阻止该窗口显示HTML渲染。