Xcode构建中,react-native-config的PhaseScriptExecution执行失败。

15
我正在尝试在Xcode上构建我的React Native项目,但是失败了。构建目标是react-native-config,出现了错误:运行自定义shell脚本“[CP-User] Config codegen”"Command PhaseScriptExecution failed with a nonzero exit code"。
尝试使用--verbose运行时,我得到了以下结果:

以下构建命令失败:PhaseScriptExecution [CP-User]\ Config\ codegen /User/userName/Library/Developer/Xcode/DerivedData/projectName/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/react-native-config-build/Script-21BEEA33BD6A21BF27B73D38DC1AD4.sh

我正在使用React Native 0.63.1和React-Native-Config 1.4.1,并尝试重新安装node_modules、pods,删除DerivedData并清理构建,但没有成功。我在Build Phases > Run Script中也没有看到任何关于react-native-config的引用。
有什么解决办法吗?
6个回答

19
通常情况下,这是由于格式不正确的.env文件引起的。请仔细检查您的.env文件。

2
我在我的 .env 文件中有一个注释 (# with three words),当我将其删除后,我成功解决了这个错误 ‍♂️。 - Blundering Philosopher
这个 .env 文件在哪里? - RadekR
在你的项目根目录下。 - karlmarxlopez
1
我的项目中没有.env文件。 :/ - SRB Bans
3
由于某些原因,我在一段时间前将一个注释从 # 这是注释 改成了 ; 这是注释,但将其改回 # 后问题得到解决! - Sandy Garrido
显示剩余5条评论

5
通常这种问题是由于依赖项未更新导致的。
您可以尝试以下步骤:
1-) cd ios
2-) rm -rf Podfile.lock
3-) rm -rf Pods
4-) delete .xcworkspace
5-) pod install

这个解决方案对我没有用。:-/ - Mike S.

4

我遇到了同样的问题,我按照一个旧的(一年前)iOS构建教程进行操作,在教程中我添加了一些包含以下内容的代码

post_install do |installer|
installer.pods_project.targets.each do |target|
  if target.name == 'React'
  target.remove_from_project
  end
  if target.name == 'react-native-config'
    phase = target.project.new(Xcodeproj::Project::Object::PBXShellScriptBuildPhase)
    phase.shell_script = 'cd ../../'\
    '&& RNC_ROOT=./node_modules/react-native-config/'\
    '&& export SYMROOT=$RNC_ROOT/ios/ReactNativeConfig'\
    '&& export BUILD_DIR=$RNC_ROOT/ios/ReactNativeConfig'\
    '&& ruby $RNC_ROOT/ios/ReactNativeConfig/BuildDotenvConfig.ruby'
    target.build_phases << phase
    target.build_phases.move(phase,0)
  end
 end
end

请从Podfile中删除它,并遵循react-native-config文档使用环境变量这里。删除后不要忘记运行pod install。

在构建时要注意构建方案(在构建时使用哪个方案)。


我在我的Podfile中没有这段代码,但是按照您提供的链接指示操作后,问题得到了解决:https://github.com/luggit/react-native-config#availability-in-build-settings-and-infoplist - Majid

3
如果有人在使用rbenv时遇到此问题,请确保ruby已经安装在项目文件夹中。

这对我有帮助,谢谢。我执行了 rbenv install。 - 29er

0

对我来说,我使用ts-node在运行脚本阶段中运行一些TypeScript代码,但是ts-node可执行文件不在/usr/local/bin/ts-node中,这导致构建失败。

尝试直接在终端中在Run Script编辑器中运行代码,这可能会给你一个关于为什么构建失败的线索。


0

由于某些软件包不匹配而发生故障,请搜索显示错误的软件包并删除它

完成后

删除ios文件夹 安装React Native eject软件包

npm i react-native-eject

重新创建 iOS 文件夹。
npx react-native eject

安装pod
cd ios
pod install

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接