gpt4 book ai didi

ios - 带有 EACCES 和 ENOENT 的 OS X 上的 Cordova Build 失败

转载 作者:可可西里 更新时间:2023-11-01 06:20:38 25 4
gpt4 key购买 nike

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

第一次运行很顺利。一切正常,将我的开发帐户添加到 Xcode 帮助我的应用程序在设备上运行。我决定通过添加一个名为 001_c.js 的“before_prepare” Hook 来让事情变得有趣一点。在<appName>/hooks/before_prepare folder .钩子(Hook)是这样开始的:

//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 kellster$ cordova build ios Running command: /Users/kellster/documents/apps/master/hooks/before_prepare/001_c.js /Users/kellster/documents/apps/master Error: spawn EACCES at exports._errnoException (util.js:746:11) at ChildProcess.spawn (child_process.js:1155:11) at Object.exports.spawn (child_process.js:988:9) at Object.exports.spawn (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:104:31) at runScriptViaChildProcessSpawn (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/hooks/HooksRunner.js:188:23) at runScript (/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 at _fulfilled (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:787:54) at self.promiseDispatch.done (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:816:30) at Promise.promise.promiseDispatch (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:749:13)

为了排除故障,我将钩子(Hook)脚本的第一行从

#!/usr/local/bin node

#! node

(因为这在 Windows 上有效。node 在全局范围内)。但是,这导致了 ENOENT 错误:

pc295786:master kellster $ cordova build ios Running command: /Users/kellster/documents/apps/master/hooks/before_prepare/001_c.js /Users/kellster/documents/apps/master Error: Hook failed with error code ENOENT: /Users/kellster/documents/apps/master/hooks/before_prepare/001_c.js at /usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/hooks/HooksRunner.js:194:23 at _rejected (/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) at Promise.promise.promiseDispatch (/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 at flush (/usr/local/lib/node_modules/cordova/node_modules/q/q.js:108:17) at process._tickCallback (node.js:355:11) at Function.Module.runMain (module.js:503:11) at startup (node.js:129:16)

我如何构建它?如果有任何我可以尝试的建议,我将不胜感激。


一些注意事项:

  1. (在我的绝望中,)我尝试运行以下命令,因为“EACCES”类型的错误。但他们似乎都没有对结果产生任何影响。构建仍然失败。
sudo chmod 777 “/Users/kellster/documents/apps/master"
sudo chmod 777 “/usr/local/lib”
sudo chmod 777 "/usr/local/bin/"
chmod 777 "/Users/kellster/documents/apps/master/platforms/"
sudo chmod a+rwx "/Users/kellster/Documents/apps/Master/hooks/before_prepare/001_c.js"
sudo chmod a+rwx "/Users/kellster/Documents/apps/Master/"
sudo chown -R kellster /usr/local/lib/node_modules/cordova

2) Node 安装在

/usr/local/bin

最佳答案

旧答案:#!/usr/local/bin Node -> 更好 #!/usr/bin/env Node

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

     #!/usr/local/bin/node 

同时修改你的脚本:例如:

      chmod 777 hooks/before_prepare/onde.js 

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

关于ios - 带有 EACCES 和 ENOENT 的 OS X 上的 Cordova Build 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28447666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com