最佳答案
我尝试在我的 renderer
进程中使用 Node 模块(在本例中是 fs
) ,如下所示:
// main_window.js
const fs = require('fs')
function action() {
console.log(fs)
}
注意: 当我按下 main_window
中的一个按钮时,就会调用 action
函数。
但这给出了一个错误:
Uncaught ReferenceError: require is not defined
at main_window.js:1
我可以解决这个问题,正如这个被接受的答案所暗示的那样,通过添加这些行到我的 main.js
时,初始化的 main_window
:
// main.js
main_window = new BrowserWindow({
width: 650,
height: 550,
webPreferences: {
nodeIntegration: true
}
})
但是,根据文件记录,这不是最好的做法,相反,我应该创建一个 preload.js
文件,在那里加载这些 Node 模块,然后在我的所有 renderer
进程中使用它。像这样:
返回文章页面
main_window = new BrowserWindow({
width: 650,
height: 550,
webPreferences: {
preload: path.join(app.getAppPath(), 'preload.js')
}
})
返回文章页面
const fs = require('fs')
window.test = function() {
console.log(fs)
}
返回文章页面
function action() {
window.test()
}
成功了!
现在我的问题是,我应该在 preload.js
中编写我的 renderer
进程的大部分代码(因为只有在 preload.js
中我才能访问 Node 模块) ,然后仅仅调用每个 renderer.js
文件中的函数(例如,这里的 main_window.js
) ,这难道不是违反直觉的吗?我不明白的是什么?