Búsqueda de sitios web

typescript - Módulos no encontrados en la aplicación de electron después de la compilación en mac


Actualmente estoy en una pequeña aplicación de Electron que usa Vue y TypeScript. Cuando ejecuto la aplicación en modo de desarrollo, todo funciona bien, pero cuando construyo la aplicación con Electron Builder, algunos módulos de alguna manera se pierden. En mi caso, los módulos adm-zip y sudo-prompt de alguna manera desaparecen durante la compilación. Así que cuando la aplicación se inicia, obtengo un error en estas líneas const AdmZip=window.require('adm-zip');. Ya intenté cambiar los módulos por otros diferentes, pero eso no parece importar. Supongo que es un problema con Webpack y TypeScript, pero como no soy muy experto en Webpack/Electron, seguramente me está faltando algo aquí. Otros módulos funcionan, como todo lo relacionado con Node o el módulo electron-store que también estoy usando.

¿Es este un problema común y tengo que importar los módulos de alguna manera diferente? Import o el require normal no funcionan, siempre tengo que hacer el window.require

Este sería el repositorio: https://github.com/w3champions/w3champions-launcher en la rama AddLauncherStuff

Respuesta #1

Ok, finalmente encontré el problema: adm-zip tiene dependencias nativas y por lo tanto tienes que añadirlo como una dependencia externa en el vue.config.js. Esto también debería funcionar para otros módulos, si tienen módulos dependientes. Añadí el siguiente vue.config.js con adm-zip en la carpeta principal de mi proyecto y ahora se integra en la versión construida. No tienes que añadir el vue.config.js a ningún paso de compilación ni nada, solo añadirlo en la parte superior de tu proyecto es suficiente para que webpack lo detecte.

module.exports = {
  pluginOptions: {
    electronBuilder: {
      externals: ['adm-zip']
    }
  }
}

Respuesta #2

Ejecuté "npm run build" con privilegios de administrador en el sistema operativo Windows. Todo funcionó bien en mi Windows.

Espero que este artículo te ayude.

https://www.christianengvall.se/electron-packager-tutorial/