我是一个初学者编码器,不太好,所以请不要介意我的代码,我正在尝试在电子js中创建一个应用程序,打开一个图像文件并将其显示在应用程序中。我必须从主进程发送一条消息,所以我使用 webContents.send 但是,我遇到了一个错误,说明了这一点
(节点:11908)UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性(读取“webContents”)
有人可以告诉我如何修复这个错误吗?
main.js(主进程):
const {app, BrowserWindow, ipcMain, dialog, globalShortcut, ipcRenderer, mainWindow, webContents}=require('electron')
const path=require('path')
const fs = require('fs')
function creatWindow(){
const title='hello'
const content='hi hello'
const win= new BrowserWindow({
height:768,
width:1366,
title:"Ahmad's Website",
webPreferences:{
preload: path.join(__dirname,'preload.js')},
nodeIntegration: true,
webviewTag: true
});
win.loadFile('src/index.html')
win.maximize()
ipcMain.on('upload', (event)=>{
dialog.showOpenDialog().then((result)=>{
c=String(result.filePaths)
f=c.replace('['/']','')
console.log(f)
mainWindow.webContents.send('uploadfile',f)
})
})
};
app.whenReady().then(creatWindow);
preload.js(预加载脚本)
const {contextBridge, ipcRenderer}= require('electron');
window.addEventListener('DOMContentLoaded',()=>{
const upload_fl=document.getElementById('upload')
upload_fl.addEventListener('click', ()=>{
ipcRenderer.send('upload')
ipcRenderer.on('uploadfile', (event,value)=>{
const path1=value
document.getElementById('img').src=path1
})
})
})
index.html(应用程序索引页)
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial scale=1">
<head>
<style>
</style>
<script src="script.js"></script>
<title>my app</title>
</head>
<body>
<h1 id="h1c">HELLO I AM AHMAD</h1> first input is name of file. and the second input is the content
<button id="upload">Upload</button>
<br><br>
<img id="img" src="" alt="">
</body>
</html>
我花了大约两三天的时间试图寻找答案。 Stackoverflow 上还有另一个问题,但情况不同,我尝试了解决方案,但没有成功
感谢@Arkellys,我得到了答案
@Arkellys=> 'Electron 不导出任何 mainWindow,这只是用于主窗口的公共变量名称。你命名你的胜利'