首先对于未深入了解Electron的我为了快速上手直接使用了该文章的方法进行了项目的基础创建:
https://zhuanlan.zhihu.com/p/75764907
碰到的一些问题:
1.项目内无法使用nodejs的api,解决方案为:
在background.js内
const win = new BrowserWindow({
width: 1300,
height: 810,
webPreferences: {
//插入这三行
nodeIntegration: true,
contextIsolation: false,
nodeIntegrationInWorker: true,
},
})
由于项目是直接调用本地py脚本,所以不涉及到ajax请求,这类的坑还没踩到过
2.在Electron内js文件使用require调用nodejs的api无法生效的问题,解决方案为:
require("child_process")
//加上window
window.require("child_process")
3.如果将要运行的脚本在打包后的exe同级的文件夹内则先用cd进入文件夹然后再运行对应的脚本即可
/* ----src:文件夹名称,data:py调用命令(python -c "from hello
import printHello;printHello()'),callback回调 */
function runPycd_data(src,data,callback) {
var exec = window.require("child_process").exec;
exec(`cd ${src} && ${data}` + '', function (error, stdout, stderr) {
if (stdout.length > 1) {
console.log(stdout);
callback(true,stdout)
} else {
callback(true,'')
console.log("you don't offer args");
}
if (error) {
console.info("stderr : " + stderr);
callback(false,stderr)
return
}
})
}