2015-05-21 10 views
8

Ich arbeite mit Ionic, das über eine Befehlszeilenschnittstelle verfügt. Ich möchte eine kleine Mac-App erstellen, mit der bestimmte Befehle ausgeführt werden können.Verwenden von NSTask, um ionische Erstellungsbefehle auszuführen - Startpfad nicht zugänglich

Im Terminal I cd Users/me/Desktop/Repos/ionic-project/myApp Nach dem Ändern würde ich z.B. ionic run

NSTask *task = [[NSTask alloc]init]; 

task.launchPath = @"/bin/bash"; 
task.currentDirectoryPath = @"cd Users/me/Desktop/Repos/ionic-tryouts/myApp"; 
task.arguments = @[@"ionic run"]; 

[task launch]; 

Aber das gibt mir ‚Arbeitsverzeichnis existiert nicht.‘ Ich habe schon einige Threads hier auf SO gelesen. Was ist mein Fehler?


EDIT:

Dank Christik für die ausführliche Antwort. Ich habe jetzt diesen Code:

NSTask *task = [[NSTask alloc]init]; 
task.launchPath = @"/usr/local/bin/ionic"; 
task.currentDirectoryPath = @"/Users/me/ionic-tryouts/myApp"; 
task.arguments = @[@"run"]; 

[task launch]; 

Jetzt bekomme ich folgende Fehlermeldung: env: Knoten: No such file or directory. Ich vermute, dass dies auf ein Problem zurückzuführen ist, dass node.js nicht gefunden wurde (ionic ist auf dem Knoten aufgebaut). Ich habe this Problem gefunden - ein fehlender Symlink mit dem richtigen Namen könnte die Ursache sein. Aber das Einstellen des Symlinks für den Knoten hat nicht geholfen. Irgendwelche Ideen?


EDIT2: gab ich Christik die richtige Antwort, obwohl ich es nicht endlich an die Arbeit machen können. Ich bin immer noch Ermittler. Vielleicht ist es die Knoteninstallation, die falsch ist.


EDIT3: sah ich einige Beiträge, die, dass es erwähnt besser sein könnte, wenn der Knoten von Homebrew neu installiert wurde, da Homebrew es ohne sudo installiert. Kurzer Kommentar: nicht helfen

Antwort

3

Wenn Sie bash verwenden möchten ionic zu starten, der entsprechende Befehl, die Sie ausführen müssen, ist /bin/bash -c ionic run, so müssen Sie die folgenden Änderungen:

  1. entfernen Sie die führenden cd von currentDirectoryPath (das ist wahrscheinlich ein Tippfehler von einer Kopie + Paste aus terminal) und füge eine führendes / einen absoluten Pfad
  2. Änderung arguments zu @[@"-c",@"ionic",@"run"] haben, da jedes Argumente NSTask ein Element des Arrays darstellen sollte.

Wenn Sie Probleme mit /usr/bin/bash wegen einigen anderen Tools nicht gefunden werden, können Sie versuchen /bin/sh verwenden.

aktualisieren Wie Aditya Vaidyam darauf hingewiesen here Sie auch die Umgebungsvariablen zu Setup benötigen könnten (vor allem die PATH eins), die gleichen Bedingungen wie für das Terminal zu simulieren. Wenn Sie herausfinden möchten, welche Umgebungsvariablen gesetzt sind, führen Sie einfach den Befehl env aus.

+0

Danke für die Antwort, aber wie oben beschrieben habe ich immer noch Probleme.Ich setze ein Kopfgeld ;-) – brainray

+0

@brainray: Die 'arguments' @ [@" - c ", @" ionic "," run "]' Liste war für die @ "/ bin/sh" ausführbar. Für ionic musst du nur '@ [@" run "]' pashen, tut mir leid, wenn ich nicht klar darüber bin. – Cristik

+0

Danke für die Aufmerksamkeit :-) Aber selbst mit nur '@ [@" run "]' als Argument gibt es 'env: node: No solche Datei oder Verzeichnis'. Ich denke, es hat etwas zu tun mit der ionischen Installation – brainray

3

Zusätzlich zu dem, was Cristik vorgeschlagen hat, müssen Sie die Position von node.js zu der environment variables (d. H. PATH) hinzufügen, es sei denn, sie ist bereits in/usr/bin/oder so.