我正在使用具有命令行界面的Ionic。我想创建一个有助于执行某些命令的小型Mac应用程序。
在终端I cd Users/me/Desktop/Repos/ionic-project/myApp
改变后,我会... 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];
但这让我'工作目录不存在。' 我已经在SO上阅读了相当多的主题。我的错是什么?
编辑:
感谢Christik的详细解答。我现在有了这段代码:
NSTask *task = [[NSTask alloc]init];
task.launchPath = @"/usr/local/bin/ionic";
task.currentDirectoryPath = @"/Users/me/ionic-tryouts/myApp";
task.arguments = @[@"run"];
[task launch];
现在我收到以下错误:env:node:No such file or directory
。我想这来自一个问题,即找不到node.js(离子是在节点之上构建的)。我发现this问题 - 缺少正确名称的符号链接可能是原因。但是为节点设置符号链接没有帮助。有什么想法吗?
EDIT2: 我给了Christik正确的答案,即使我最终无法让它工作。我还在调查。也许这是节点安装错误。
EDIT3: 我看到一些帖子提到它可能会更好,如果由homebrew重新安装节点,因为自制程序安装它没有sudo。简短评论:没有帮助
答案 0 :(得分:3)
如果您想使用bash
启动ionic
,那么您需要执行的等效命令是/bin/bash -c ionic run
,因此您需要更改以下:
cd
中删除前导currentDirectoryPath
(可能是来自终端的副本+粘贴的拼写错误)并添加前导/
以获得绝对路径arguments
更改为@[@"-c",@"ionic",@"run"]
,因为NSTask的每个参数都应代表数组的项目。如果由于找不到其他工具而导致/usr/bin/bash
出现问题,您可以尝试使用/bin/sh
。
更新由于Aditya Vaidyam指出here,您可能还需要设置环境变量(尤其是PATH
一个),以模拟相同的条件对于终端。如果要查找设置了哪些环境变量,只需运行env
命令。
答案 1 :(得分:3)
除了Cristik建议的内容之外,你需要添加environment variables(即PATH),即node.js的位置,除非它已经在/ usr / bin /中。