Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Cordova构建在带有EACCES&;的OS X上失败;埃诺特_Ios_Node.js_Macos_Cordova - Fatal编程技术网

Ios Cordova构建在带有EACCES&;的OS X上失败;埃诺特

Ios Cordova构建在带有EACCES&;的OS X上失败;埃诺特,ios,node.js,macos,cordova,Ios,Node.js,Macos,Cordova,我最近开始使用Cordova构建iOS应用程序,我遇到了一个障碍。在安装了nodeJS、git和cordova(使用sudo)之后,我在我的用户帐户的Documents文件夹中创建了我的第一个应用程序 第一次跑得很顺利。一切正常,将我的开发人员帐户添加到Xcode有助于我的应用程序在设备上运行。我决定在/hooks/before\u prepare文件夹中添加一个名为001_c.js的“before\u prepare”钩子,让事情变得更加有趣。钩子是这样开始的: //This is where

我最近开始使用Cordova构建iOS应用程序,我遇到了一个障碍。在安装了nodeJS、git和cordova(使用sudo)之后,我在我的用户帐户的Documents文件夹中创建了我的第一个应用程序

第一次跑得很顺利。一切正常,将我的开发人员帐户添加到Xcode有助于我的应用程序在设备上运行。我决定在
/hooks/before\u prepare文件夹中添加一个名为
001_c.js
的“before\u prepare”钩子,让事情变得更加有趣。钩子是这样开始的:

//This is where nodeJS exists
#!/usr/local/bin node

console.log("Changing config");

var fs = require('fs');
var path = require('path');

var rootdir = process.argv[2];

//and so on
当我现在构建应用程序时,出现以下错误:

pc295786:master Kelster$cordova构建ios运行命令: /用户/kelster/documents/apps/master/hooks/before\u prepare/001\u c.js /用户/kelster/documents/apps/master错误:spawnEACCES 导出时出现异常(util.js:746:11) 在ChildProcess.spawn(child_process.js:1155:11) 在Object.exports.spawn(child_process.js:988:9) 在Object.exports.spawn(/usr/local/lib/node_modules/cordova/node_modules/cordova lib/src/cordova/superspawn.js:104:31) 在运行ScriptViaChildProcessSpawn时(/usr/local/lib/node_modules/cordova/node_modules/cordova lib/src/hooks/HooksRunner.js:188:23) 运行脚本时(/usr/local/lib/node_modules/cordova/node_modules/cordova lib/src/hooks/HooksRunner.js:131:16) at/usr/local/lib/node_modules/cordova/node_modules/cordova lib/src/hooks/HooksRunner.js:114:20 完成时(/usr/local/lib/node_modules/cordova/node_modules/q/q.js:787:54) 在self.promiseDispatch.done(/usr/local/lib/node_modules/cordova/node_modules/q/q.js:816:30) 在Promise.Promise.dispatch(/usr/local/lib/node_modules/cordova/node_modules/q/q.js:749:13)

为了排除故障,我将hook脚本的第一行从

#!/usr/local/bin node

(因为这在Windows上起作用。
节点
在全局范围内)。但是,这导致了一个enoint错误:

pc295786:master Kelster$cordova构建ios运行命令: /用户/kelster/documents/apps/master/hooks/before\u prepare/001\u c.js /用户/Kelster/documents/apps/master错误:挂钩失败,出现错误 代码enoint: /用户/kelster/documents/apps/master/hooks/before\u prepare/001\u c.js at/usr/local/lib/node_modules/cordova/node_modules/cordova lib/src/hooks/HooksRunner.js:194:23 at_被拒绝(/usr/local/lib/node_modules/cordova/node_modules/q/q.js:797:24) at/usr/local/lib/node_modules/cordova/node_modules/q/q.js:823:30 at Promise.when(/usr/local/lib/node_modules/cordova/node_modules/q/q.js:1035:31) 在Promise.Promise.dispatch(/usr/local/lib/node_modules/cordova/node_modules/q/q.js:741:41) at/usr/local/lib/node_modules/cordova/node_modules/q/q.js:557:44 刷新时(/usr/local/lib/node_modules/cordova/node_modules/q/q.js:108:17) 在进程中调用(node.js:355:11) 位于Function.Module.runMain(Module.js:503:11) 启动时(node.js:129:16)

我该如何构建它?如果有任何建议,我将不胜感激


需要注意的一些事项:

  • (在我绝望中)我尝试运行以下命令,因为“EACCES”类型的错误。但它们似乎都没有对结果产生任何影响。构建仍然失败 2) 节点安装在中

    /usr/本地/bin

    老话说:#/usr/local/bin节点->更好/usr/bin/env节点

    更新的答案:不要使用空格引用节点可执行文件,而是使用:

         #!/usr/local/bin/node 
    
    还可以chmod脚本:例如:

          chmod 777 hooks/before_prepare/onde.js 
    

    其中onde.js是您的脚本。如果您使用的是Mac(我的案例)或Linux,那么您的.js必须使用chmod 777以避免EACCES错误。

    sudo cordova构建ios是否有效?这至少会排除访问权限是原因…不@DaveAlden。事实并非如此。也尝试了,谢谢您的回复,但是
    bin
    文件夹中没有
    env
    文件夹。当我运行更改目录命令时,我得到了这个
    -bash:cd:/usr/bin/env:Not directory
    ,因为这不是文件夹,只是脚本中的环境引用。无论如何,保持#/usr/local/bin节点和chmod 777脚本应该可以工作。在控制台中尝试env,您应该会看到定义了哪些路径和变量:)我已经用/usr/local/bin/node进行了测试,它正在工作。路径中没有空格。cordova build ios Running命令:/Users/mainframe/Desktop/hello/hooks/before\u prepare/a.js/Users/mainframe/Desktop/hello更改配置谢谢!将第一行从
    /usr/local/bin node
    更改为
    /usr/local/bin/node
    。还运行了
    chmod
    。然后它成功了。请更新这个答案,以便它可以帮助一个可怜的灵魂(如我自己)chmod为我修复它。不过,不需要授予写访问权限<代码>查找钩子-iname“*.js”-execchmoda+x{}\
         #!/usr/local/bin/node 
    
          chmod 777 hooks/before_prepare/onde.js