Electron: Funktionsanforderung: API zum Abrufen des Pfads des App-Quellcodeordners

Erstellt am 16. Mai 2015  ·  3Kommentare  ·  Quelle: electron/electron

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:

  • ändere process.cwd() in den eigentlichen App-Ordner
  • füge eine neue Option zu app.getPath , die den App-Ordnerpfad zurückgibt

Hilfreichster Kommentar

Schau dir process.resourcesPath , es ist im Grunde das, was du für die zweite Option beschreibst

Alle 3 Kommentare

Schau 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])
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen