当`node cordova / lib / copy-www-build-step.js`在构建阶段时,cordova构建错误

时间:2019-04-09 14:24:59

标签: ios cordova

我是一位没有iOS开发经验的网络开发人员。现在,我正在使用Cordova来构建iOS应用。因为我不了解iOS或Xcode,所以对我来说很难。内置Xcode或内置命令行时,总是会收到类似以下输出的错误。

  1. Xcode构建中的错误信息:
Run custome shell script 'Copy www directory'

PhaseScriptExecution Copy\ www\ directory /Users/jyjin/Library/Developer/Xcode/DerivedData/myios-auhioanpfinvvvcrnvoaioslreyr/Build/Intermediates.noindex/myios.build/Debug-iphonesimulator/myios.build/Script-304B58A110DAC018002A0835.sh (in target: myios)
    cd /Users/jyjin/workspace/gitProject/Cordova/FirstProject/platforms/ios
    /bin/sh -c /Users/jyjin/Library/Developer/Xcode/DerivedData/myios-auhioanpfinvvvcrnvoaioslreyr/Build/Intermediates.noindex/myios.build/Debug-iphonesimulator/myios.build/Script-304B58A110DAC018002A0835.sh

/Users/jyjin/Library/Developer/Xcode/DerivedData/myios-auhioanpfinvvvcrnvoaioslreyr/Build/Intermediates.noindex/myios.build/Debug-iphonesimulator/myios.build/Script-304B58A110DAC018002A0835.sh: line 2: 27158 Segmentation fault: 11  node cordova/lib/copy-www-build-step.js
Command PhaseScriptExecution failed with a nonzero exit code

  1. 命令行构建中的错误信息:
** BUILD FAILED **


The following build commands failed:
        PhaseScriptExecution Copy\ www\ directory /Users/jyjin/Library/Developer/Xcode/DerivedData/myios-auhioanpfinvvvcrnvoaioslreyr/Build/Intermediates.noindex/myios.build/Debug-iphonesimulator/myios.build/Script-304B58A110DAC018002A0835.sh
(1 failure)
xcodebuild: Command failed with exit code 65

我在网站上阅读了很多解决方案,最后我发现在构建阶段有一些脚本:

NODEJS_PATH=/usr/local/bin; NVM_NODE_PATH=~/.nvm/versions/node/`nvm version 2>/dev/null`/bin; N_NODE_PATH=`find /usr/local/n/versions/node/* -maxdepth 0 -type d 2>/dev/null | tail -1`/bin; XCODE_NODE_PATH=`xcode-select --print-path`/usr/share/xcs/Node/bin; PATH=$NODEJS_PATH:$NVM_NODE_PATH:$N_NODE_PATH:$XCODE_NODE_PATH:$PATH && node cordova/lib/copy-www-build-step.js

多次检查错误消息后,我尝试在 Build Phases 中删除&& node cordova/lib/copy-www-build-step.js,它成功构建,但是html中没有页面效果(没有复制www资源)我认为)。

,我试图在copy-www-build-step.js中检出一些env PATH值,所以我在copy-www-build-step.js中写了一些日志代码,但不知道如何在Xcode中打印js日志。然后我发现cordova-plugin-console,但是npm doc说它是重复的,并且包含Cordova的最新版本,而我的也是最新的。

哦,天哪!一个星期过去了……我只想构建一个iOS应用。很难玩。幽灵知道我的经历:配置证书,配置文件,从头开始构建Cordova应用程序,甚至花费99美元购买一个苹果开发人员帐户...

只想在业余时间自己玩一个iOS应用...希望有人可以帮助我~~

     -- From a desperate Chinese boy !

2 个答案:

答案 0 :(得分:0)

哦!我已经修复了〜

首先,检查脚本:

NODEJS_PATH=/usr/local/bin; NVM_NODE_PATH=~/.nvm/versions/node/`nvm version 2>/dev/null`/bin; N_NODE_PATH=`find /usr/local/n/versions/node/* -maxdepth 0 -type d 2>/dev/null | tail -1`/bin; XCODE_NODE_PATH=`xcode-select --print-path`/usr/share/xcs/Node/bin; PATH=$NODEJS_PATH:$NVM_NODE_PATH:$N_NODE_PATH:$XCODE_NODE_PATH:$PATH && node cordova/lib/copy-www-build-step.js

当前错误为xcodebuild: Command failed with exit code 65。这是第一个错误,在Mac中运行时,&&应该为&

然后,错误变为Command /bin/sh failed with exit code 127。我发现了xcode错误消息:node: command not found

因此,我在命令行中运行find /usr/local/n/versions/node/* -maxdepth 0 -type d 2>/dev/null | tail -1。并获取节点结果路径/usr/local/n/versions/node/11.12.0

运行

node -v // v10.15.3

因此,我删除了build_phases中的所有脚本,并为它提供了真正的nvm节点路径的节点路径,如下所示更改了build_phases:

/Users/jyjin/.nvm/versions/node/v10.15.3/bin/node cordova/lib/copy-www-build-step.js

建立成功!

总结! cordova auto build_phases脚本可能不适合您的环境,请确保构建阶段可以获取您的节点路径!

答案 1 :(得分:0)

只需将cordova-ios更新到最新版本:

npm i cordova-ios@latest

您可以在此PR:#600中看到此问题已得到解决,他们将脚本从javascript更改为旧的shell版本,并解决了该问题。

不更新库的解决方法

构建阶段标签中输入xCode,然后单击“复制www目录”阶段,因此将脚本更改为:

$SRCROOT/__PROJECT_NAME__/Scripts/copy-www-build-step.sh

“ __ PROJECT_NAME__”是xCode项目的名称。

下载完copy-www-build-step.sh脚本并将其放在“ __PROJECT_NAME __ / Scripts /”路径中。

参考