I keep getting undefined value from the main process in renderer process. I am using ipcRenderer.invoke and ipcMain.handle.
main process (just cut down to this section):
ipcMain.handle('process-message-to-gemini', async (event, chatMessage) => {
const API_KEY = 'AIzaSyC30Qftd1JbdwZbMS_wbyoOhHtjza1pYOg'
const genAI = new GoogleGenerativeAI(API_KEY)
const model = genAI.getGenerativeModel({ model: 'gemini-1.5-flash' })
const prompt = chatMessage.message
const result = await model.generateContent(prompt)
const response = await result.response
const text = response.text()
console.log(text)
return text
})
preload:
import { contextBridge, ipcRenderer } from 'electron'
import { electronAPI } from '@electron-toolkit/preload'
// Custom APIs for renderer
const api = {
processMessageToChatGPT: (chatMessages) => {
ipcRenderer.invoke('process-message-to-chatgpt', chatMessages)
},
processMessageToGemini: (chatMessage) => {
ipcRenderer.invoke('process-message-to-gemini', chatMessage)
}
}
// Use `contextBridge` APIs to expose Electron APIs to
// renderer only if context isolation is enabled, otherwise
// just add to the DOM global.
if (process.contextIsolated) {
try {
contextBridge.exposeInMainWorld('electron', electronAPI)
contextBridge.exposeInMainWorld('api', api)
} catch (error) {
console.error(error)
}
} else {
window.electron = electronAPI
window.api = api
}
renderer process (just cut down to this section):
try {
const response = await window.api.processMessageToGemini(newMessage);
console.log(response)
setMessages([...newMessages, {
message: response,
sender: "Gemini",
direction: "incoming"
}])
} catch (error){
console.error('Error:', error.message);
} finally {
setTyping(false)
}
The response that I got in the renderer process is undefined. What am I doing wrong?
I expected to get text from gemini
New contributor
user25763237 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.