Wenn ich zB cd myapp/
und electron app.js
mache, ist die Ausgabe von process.cwd()
/Users/maxogden/myapp
.
Wenn ich jedoch meine App mit Electron-Packager verpacke und ausführe, was bedeutet, dass sich meine App jetzt im Ordner Contents/Resources/app
in einer modifizierten Kopie des offiziellen Electron.app
von der Veröffentlichungsseite befindet , process.cwd()
ist /
.
Ich bin mir nicht sicher, warum Electron beschließt, meine App mit process.cwd auf /
auszuführen, aber so funktioniert es, und wenn Sie process.cwd()
in der Konsole in Atom ausführen .app erhalten Sie auch /
.
Mein Problem ist, dass ich keine Möglichkeit habe, den Pfad zu den Quelldateien der App abzurufen. Die einzige Möglichkeit wäre, den Wert von __dirname
im ausführbaren Hauptskript der App zu erfassen, aber dies ist keine gute Lösung für Fälle wie meine Modulmenüleiste , wo die API derzeit so ist:
var menubar = require('menubar')
var mb = menubar()
mb.on('ready', function ready () {
console.log('app is ready')
})
Dies funktioniert jedoch nicht, wenn es in einem App-Container verpackt ist, da die Menüleiste nach der index.html
Seite des Benutzers sucht, um sie mit process.cwd()
hier zu laden, sondern weil process.cwd()
/
statt /Users/maxogden/myapp/Example.app/Contents/Resources/app
findet index.html nicht und die App wird nicht geladen.
Node-Apps haben dieses Problem im Allgemeinen nicht, da process.cwd() immer zuverlässig ist. Das Problem wird dadurch verursacht, dass process.cwd() auf /
(es könnte eine Mac OS X Sache sein, die weiß).
Um das Problem zu beheben, kann ich von Benutzern, die die Menüleiste verwenden, die Eingabe von __dirname
verlangen, aber dies ist nicht ideal oder benutzerfreundlich.
Ich schlage eine dieser Lösungen vor, um dies zu beheben:
process.cwd()
in den eigentlichen App-Ordnerapp.getPath
, die den App-Ordnerpfad zurückgibtSchau dir process.resourcesPath
, es ist im Grunde das, was du für die zweite Option beschreibst
@paulcbetts ahhhhhh danke, ich wusste nicht einmal https://github.com/atom/electron/blob/cd0aa4a956cb7a13cbe0e12029e6156c3e892924/docs/api/process.md#process -object existierte (ich hatte nicht erwartet , Elektron monkeypatch process
)
Hatte dieses Problem in Atom, wo path.resolve('something')
zu /something
. Es hat Tslint für mich gebrochen. Das hat geholfen:
öffne init.coffee (Atom > Preferences > Init Script...) und füge hinzu:
process.chdir(atom.project.getPaths()[0])
Hilfreichster Kommentar
Schau dir
process.resourcesPath
, es ist im Grunde das, was du für die zweite Option beschreibst