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:
process.cwd()
a la carpeta de la aplicación realapp.getPath
que devuelva la ruta de la carpeta de la aplicaciónEcha 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])
Comentario más útil
Echa un vistazo a
process.resourcesPath
, es básicamente lo que estás describiendo para la segunda opción