Electron: solicitud de función: API para obtener la ruta de la carpeta del código fuente de la aplicación

Creado en 16 may. 2015  ·  3Comentarios  ·  Fuente: electron/electron

Cuando lo hago, por ejemplo, cd myapp/ y electron app.js , la salida de process.cwd() es /Users/maxogden/myapp .

Sin embargo, cuando empaqueto + ejecuto mi aplicación usando electron-packager , lo que significa que mi aplicación ahora se encuentra dentro de la carpeta Contents/Resources/app en una copia modificada del Electron.app oficial de la página de lanzamientos , process.cwd() es / .

No estoy seguro de por qué Electron está decidiendo ejecutar mi aplicación con process.cwd configurado en / , pero así es como funciona, y si ejecuta process.cwd() en la consola en Atom .app también obtendrá / .

Mi problema es que no tengo forma de obtener la ruta a los archivos fuente de la aplicación, la única forma sería capturar el valor de __dirname en el script ejecutable principal de la aplicación, pero esta no es una buena solución para casos como la barra de menú de mi módulo, donde la API es actualmente esta:

var menubar = require('menubar')
var mb = menubar()
mb.on('ready', function ready () {
  console.log('app is ready')
})

Pero esto no funciona cuando se empaqueta en un contenedor de aplicaciones, porque la barra de menú busca la página de los usuarios index.html para cargar usando process.cwd() aquí , pero porque process.cwd() es / lugar de /Users/maxogden/myapp/Example.app/Contents/Resources/app no encuentra index.html y la aplicación no se carga.

Las aplicaciones de nodo en general no tienen este problema porque process.cwd () siempre es confiable, el problema se debe a que process.cwd () se establece en / (podría ser una cosa de Mac OS X, que sabe).

Para solucionarlo, puedo requerir que los usuarios que usan la barra de menú pasen __dirname , pero esto no es ideal ni fácil de usar.

Propongo una de estas soluciones para solucionar esto:

  • cambie process.cwd() a la carpeta de la aplicación real
  • agregue una nueva opción a app.getPath que devuelva la ruta de la carpeta de la aplicación

Comentario más útil

Echa un vistazo a process.resourcesPath , es básicamente lo que estás describiendo para la segunda opción

Todos 3 comentarios

Echa un vistazo a process.resourcesPath , es básicamente lo que estás describiendo para la segunda opción

@paulcbetts ahhhhhh gracias, ni siquiera me di cuenta de que https://github.com/atom/electron/blob/cd0aa4a956cb7a13cbe0e12029e6156c3e892924/docs/api/process.md#process -object existía (no esperaba que el electrón al parche de mono process )

Tenía ese problema en el átomo donde path.resolve('something') se resolvería en /something . Rompió tslint para mí. Esto ayudó:

abra init.coffee (Atom> Preferences> Init Script ...) y agregue:

process.chdir(atom.project.getPaths()[0])
¿Fue útil esta página
0 / 5 - 0 calificaciones