Electron.js:需要远程模块不允许脚本运行
2021-10-03
301
我想为我的无框窗口添加带有自定义按钮的自定义标题。
我有两个脚本文件 -
index.js
,它在 Electron 启动时自动运行,以及
app.js
,它使用
<script src>
标签添加到
index.html
中。
有一个问题 -
require()
不允许脚本工作 - 如果我需要任何模块,则没有任何行运行,不管它是什么。
index.html:
<head>
...
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="app.js"></script>
...
</head>
index.js
const {app, BrowserWindow} = require('electron')
const path = require('path')
const sass = require('sass')
const fs = require('fs')
// Creates a main window
function createWindow () {
renderStylesheets()
let mainWindow = new BrowserWindow({
width: 800,
height: 600,
resizable: true,
transparent: true,
frame: false,
webPreferences: {
preload: path.join(__dirname, 'preload.js')
}
})
mainWindow.loadFile('index.html').then(() => {})
}
...
app.js
alert("This alert won't show.")
// If I remove these lines, alerts and jQuery's "$(callback)" will run, but
// button actions won't work :(
const { BrowserWindow, app } = require('electron').remote;
let window = BrowserWindow.getFocusedWindow();
alert("This alert won't show and the $(() => {}) won't run too.")
...
2个回答
问题出在哪里?如果问题出在
index.html
中,则问题出在所显示内容的第 4 行。请确保您引用了正确的网站,并且引用了正确的数据。
如果问题出在
index.js
中,则问题可能出在所显示内容的第 8 行,因为您需要确保在第 8 行之前提到或声明了变量“app”的值。
这是我立即看到的可能导致此问题的唯一两件事。
希望这能有所帮助。
humnhilightr
2021-10-03
问题是
app.js
和任何其他脚本都没有
require
函数。为了在主脚本之外添加对 Node.js 函数的访问,我将
nodeIntegration: true
和
contextIsolation: false
设置为窗口初始化程序:
mainWindow = new BrowserWindow({
width: 900,
height: 600,
resizable: true,
transparent: true,
show: true,
frame: false,
center: true,
webPreferences: {
preload: path.join(__dirname, 'preload.js'),
nodeIntegration: true, // <- This one
contextIsolation: false, // <- And this one
}
})
Vega TV
2021-10-07