Estoy buscando cargar un archivo de video guardado localmente a través de electrones y reproducirlo en mi componente angular. Para esto, tengo la función loadLocalFile que expongo para evitar establecer nodeIntegration en verdadero. Sigo recibiendo esta advertencia de seguridad:
Este proceso de representación no tiene establecida una política de seguridad de contenido o tiene una política con "evaluación insegura" habilitada. Esto expone a los usuarios de esta aplicación a riesgos de seguridad innecesarios.
No tengo un archivo renderer.js porque estoy usando Angular. ¿Cómo debo acceder a mi electronAPI en mi Angular?
Mi Preload.js contiene lo siguiente, que quiero llamar desde mi componente Angular:
contextBridge.exposeInMainWorld("electronAPI", { loadLocalFile: (event, filePath) => { if (filePath === undefined) { console.log("No file selected"); return; } dialog.showOpenDialog((filePath) => { // fileNames is an array that contains all the selected if (filePath === undefined) { console.log("No file selected"); return; } fs.readFile(filePath, "utf-8", (err, data) => { if (err) { alert("An error ocurred reading the file :" + err.message); return; } // Change how to handle the file content console.log("The file content is : " + data); }); }); }, });Mi app.module.ts contiene lo siguiente:
export interface IElectronAPI { loadLocalFile: (event: Event | null, path: string) => Promise<void>; } declare global { interface Window { electronAPI: IElectronAPI; } }en mi Componente Angular accedo a la Api con:
window.electronAPI.loadLocalFile(null, "/path/to/my/video");¿Cómo pretende implementar el acceso electrónico a la API desde su componente Angular? Un servicio probablemente funcionaría bien, pero no pude encontrar ni dar con un ejemplo de trabajo que no esté roto por la eliminación de ciertas importaciones.
puedes usar ngx-electron. lo que le ayuda a llamar a las API de Electron desde el proceso Renderer más fácilmente. Puede usarlas fácilmente en el proyecto Angular. pero no estoy seguro de que ayude a leer el archivo de video o no.