React Native 构建命令失败:PhaseScriptExecution ...(域=NSPOSIXErrorDomain,代码=2)

Posted

技术标签:

【中文标题】React Native 构建命令失败:PhaseScriptExecution ...(域=NSPOSIXErrorDomain,代码=2)【英文标题】:React Native Build Commands Failed: PhaseScriptExecution ... (domain=NSPOSIXErrorDomain, code=2) 【发布时间】:2016-05-16 13:52:53 【问题描述】:

环境

Mac OS X Version 10.11.3 (15D21)
Xcode Version 7.2 (7C68)
Simulator Version 9.2 (SimulatorApp-643)
react-native-cli 0.1.10
node v5.5.0

我在运行应用程序之前做了什么

npm install -g react-native-cli
react-native init DemoProjectDELETEME
cd ./DemoProjectDELETEME
react-native run-ios

我是 React Native 的新手。当我尝试在 iOS 模拟器上运行默认应用程序时,出现以下错误。我发现了一个类似的问题,但它并没有解决我的问题。

Xcode6 can't run any app in simulator ( Domain = NSPOSIXErrorDomain, Code = 3 )

重启机器和模拟器后问题依然存在。

** BUILD FAILED **


The following build commands failed:
    PhaseScriptExecution Run\ Script /Users/x/Desktop/DemoProjectDELETEME/ios/build/Build/Intermediates/React.build/Debug-iphonesimulator/React.build/Script-006B79A01A781F38006873D1.sh
(1 failure)
Installing build/Build/Products/Debug-iphonesimulator/DemoProjectDELETEME.app
An error was encountered processing the command (domain=NSPOSIXErrorDomain, code=2):
Failed to install the requested application
An application bundle was not found at the provided path.
Provide a valid path to the desired application bundle.
Print: Entry, ":CFBundleIdentifier", Does Not Exist
/Users/x/Desktop/DemoProjectDELETEME/node_modules/promise/lib/done.js:10
      throw err;
      ^

Error: Command failed: /usr/libexec/PlistBuddy -c Print:CFBundleIdentifier build/Build/Products/Debug-iphonesimulator/DemoProjectDELETEME.app/Info.plist
Print: Entry, ":CFBundleIdentifier", Does Not Exist

    at checkExecSyncError (child_process.js:464:13)
    at Object.execFileSync (child_process.js:484:13)
    at _runIOS (runIOS.js:77:34)
    at runIOS.js:24:5
    at tryCallTwo (/Users/x/Desktop/DemoProjectDELETEME/node_modules/promise/lib/core.js:45:5)
    at doResolve (/Users/x/Desktop/DemoProjectDELETEME/node_modules/promise/lib/core.js:200:13)
    at new Promise (/Users/x/Desktop/DemoProjectDELETEME/node_modules/promise/lib/core.js:66:3)
    at Array.runIOS (runIOS.js:23:10)
    at Object.run (/Users/x/Desktop/DemoProjectDELETEME/node_modules/react-native/local-cli/cli.js:86:13)
    at Object.<anonymous> (/usr/local/lib/node_modules/react-native-cli/index.js:73:7)

当我尝试从 Xcode 启动应用程序时出现跟随错误。

项目根目录中的sudo npm start 解决了问题,但react-native run-ios 仍然BUILD FAILED

感谢您抽出宝贵时间查看我的问题。

【问题讨论】:

在按照说明创建基本示例项目时遇到此类问题总是非常令人失望。它并没有给 React Native 带来太多希望。 【参考方案1】:

尝试运行react-native upgrade

参见 Github 帖子:https://github.com/facebook/react-native/issues/7308#issuecomment-219597774

【讨论】:

【参考方案2】:

对我来说,8081 端口正在使用中:

lsof -n -i4TCP:8081

【讨论】:

不知道为什么这被否决了,这就是为我解决的问题(在阅读了另一个问题中的类似建议之后)。 天哪,一个与调试消息指向的任何方向相去甚远的解决方案。谢谢! 为我工作!是的,令人惊讶的是,调试消息并未表明该端口正在使用中【参考方案3】:

1.转到文件 -> 项目设置 2.点击高级按钮 3.选择“自定义”,在下拉菜单中选择“相对于工作区” 4.将“构建/产品”更改为“构建/构建/产品” 5.点击完成,完成

【讨论】:

感谢帮助。这可以通过简单地删除一些东西来复制吗?此外,图片和文字步骤不对齐。 ss 也改变了 Intermediates 字段。【参考方案4】:

问题出在构建和运行您的应用程序的 js 文件中。除非您的项目、方案和产品名称都相同,否则您会遇到错误,尤其是在模拟器上。

好消息是我提交了a pull request that fixes the problem. 请给它投票,这样我们就不用担心重命名时会出现问题。

【讨论】:

这是该线程中唯一明智的答案。您可能还想补充一点,这种行为可能会持续到守望者和/或模拟器重新启动。除此之外,我无法相信为解决此问题而给出的答案。我可能想添加我自己的“抓住你的胯部,转过头,咳嗽三下,然后转身”,因为纯粹是巧合,这将与其他许多人一样有帮助。【参考方案5】:

对我来说,我只需要编辑 iOS 项目构建设置

未设置产品包标识符

您需要为项目和 2 个目标设置它

【讨论】:

【参考方案6】:
    在 Xcode 中打开您的 react-native 项目 使用项目名称创建一个新架构。 问题将得到解决

【讨论】:

没用。我可以在 Xcode 中运行项目,但不能在命令行上使用 react-native run-ios 没用。我的项目名称的方案已经存在并被选中。【参考方案7】:

在所有命令前添加sudo 即可解决问题。

sudo react-native init ProjectName

sudo chmod 777 ProjectName

cd ProjectName
sudo react-native run-ios 

【讨论】:

错误消失了,但现在显示“没有设备启动” 这肯定会导致以后每次要运行项目时都需要sudo。不需要 Sudo。 @Aathi 答案对我有用。 可怕的答案。您可以使用 chmod 755(用户:完整,组/世界:读/写)或 744(完整,读)。使用 777 是对任何事物的公开邀请。如果您需要在项目中使用 sudo,您可能需要调查这些工具和库无法作为普通用户访问的原因。如果您的工具未安装在用户可访问的文件夹中,则会继续出现问题;你不应该在你的项目中使用“sudo”。而是修复您的权限:docs.npmjs.com/getting-started/fixing-npm-permissions【参考方案8】:

对我来说,我需要将我的 XCode 版本从 Yosemite 升级到 Sierra。

这可以通过App Store > Updates 完成。

【讨论】:

【参考方案9】:

对我有用的是从 ios 目录运行 pod install

【讨论】:

【参考方案10】:

打开你的 Xcode 项目

运行它

您应该有 2 个来自 RCTSRWebSocket.m 的错误

在两行的开头添加(void):

SecRandomCopyBytes(kSecRandomDefault, sizeof(uint32_t), (uint8_t *)mask_key);

成为

(void)SecRandomCopyBytes(kSecRandomDefault, sizeof(uint32_t), (uint8_t *)mask_key);

使用 Xcode 或终端保存并重新运行您的项目。它应该肯定有效。我之前测试过所有的解决方案,这个是唯一为我工作的。

【讨论】:

【参考方案11】:

令人惊讶的是,这对我来说是解决方案:在 Xcode 中打开文件 Views/RTCScrollView.m 并将变量 _refreshControl 更改为 refreshControl。所有出现的 _refreshControl 都已被标记为错误。新代码变为:

- (void)setRefreshControl:(RCTRefreshControl *)refreshControl

  if (refreshControl) 
    [refreshControl removeFromSuperview];
  
  refreshControl = refreshControl;
  [self addSubview:refreshControl];

【讨论】:

【参考方案12】:

我的问题已经解决了,如果你的情况一样,可以试试。

我遇到了同样的错误:

打印:条目,“:CFBundleIdentifier”,不存在

当我从 learning react native 克隆一个现有的 react-native 项目时。

    我在不同的目录中初始化(使用react-native init yourProjectName)一个同名的新项目

    将每个有用的 *.ios.js 文件从我在其他地方克隆的文件复制到这个新项目。

这对我有用。

【讨论】:

【参考方案13】:

编辑文件,ProjectName/node_modules/react-native/local-cli/runIOS/runIOS.js 第 18 行:将整行代码替换为以下内容:

return `build/Build/Products/$configuration-$isDevice ? 'iphoneos' : 'iphonesimulator'/$appName.app`;

第146行:取消注释'-derivedDataPath', 'build',

然后从终端运行命令:sudo react-native run-ios

【讨论】:

【参考方案14】:

对我来说,我的问题是 Mcafee 在端口 8081 上运行,所以我在这个答案 https://***.com/a/50649969/5323419 之后在不同的端口上运行应用程序 基本上:

react-native run-ios --port 1234 react-native start --port 1234

我正在使用 React 本机 0.55+

【讨论】:

【参考方案15】:

跑步

npx pod-install

为我解决了问题。

【讨论】:

以上是关于React Native 构建命令失败:PhaseScriptExecution ...(域=NSPOSIXErrorDomain,代码=2)的主要内容,如果未能解决你的问题,请参考以下文章

React Native 构建命令失败:PhaseScriptExecution ...(域=NSPOSIXErrorDomain,代码=2)

(React Native) npm run ios 出错,构建命令失败:PhaseScriptExecution

React Native,AwesomeProject,react-native run-ios:** 构建失败 **

React Native 和 Android Studio:应用无法构建。错误:命令失败:gradlew.bat app:installDebug -PreactNativeDevServerPort

从 github 打开 react-native 项目时构建失败

在 Mac M1 上 React Native ios 构建失败