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_INTEGRATION
。 QUASAR_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
}
})
确保两个配置位置保持同步!