Electron Node集成

Electron node集成是指从“渲染器”线程(UI)内部访问Node.js资源的能力。 在Quasar CLI中,默认情况下启用了此功能,尽管Electron鼓励开发人员将其关闭,以确保安全。

从“@quasar/app” v1.3+开始,您可以关闭node集成。

将其关闭时不起作用

如果关闭Node集成,则在渲染器线程中将无法执行以下操作:

  • 导入Node.js包(例如“fs”,“path”,“electron”)。 使用“require”将触发错误。
  • 使用__statics更多信息)。
  • 在.vue文件中使this.$q.electron(作为electron对象的别名)。

您将无法执行的操作示例:

export default {
  methods: {
    minimize () {
      this.$q.electron.remote.BrowserWindow.getFocusedWindow().minimize()

      // equivalent to:
      const { remote } = require('electron')
      remote.BrowserWindow.getFocusedWindow().minimize()
    }
  }
}

但是,如果要使用Electron preload脚本,则可以从那里访问Node,而无论Node集成是否打开。 因此,基本上,您可以从那里将内容注入全局的“window”中。

如何关闭

如果要禁用node集成,则必须编辑/quasar.conf.js:

// 文件: /quasar.conf.js
electron: {
  nodeIntegration: false
}

TIP

从“@quasar/app”v2.0+开始,您可以编辑主线程文件以设置nodeIntegration: QUASAR_NODE_INTEGRATIONQUASAR_NODE_INTEGRATION环境变量是Quasar注入的,因此您只有一个位置可以编辑节点集成状态:quasar.conf.js。

旧版警告

如果您的“@quasar/app”版本大于v1.7且低于v2.0,那么您还需要在主线程文件(/src-electron/main-process/main.js)中使用QUASAR_NODE_INTEGRATION):

// 文件: /src-electron/main-process/main.js

mainWindow = new BrowserWindow({
  // ..

  webPreferences: {
    nodeIntegration: QUASAR_NODE_INTEGRATION
  }
})

如果您的“@quasar/app”版本低于v1.7,那么您还需要编辑主线程文件(/src-electron/main-process/main.js):

// 文件: /src-electron/main-process/main.js

mainWindow = new BrowserWindow({
  // ..

  webPreferences: {
    nodeIntegration: false
  }
})

确保两个配置位置保持同步!