React Native Build命令失败:PhaseScriptExecution ...(domain = NSPOSIXErrorDomain,code = 2)

时间:2016-02-06 16:47:30

标签: ios xcode ios-simulator react-native

环境

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启动应用程序时出现了关注错误。

enter image description here

项目根目录中的

sudo npm start解决了问题,但react-native run-ios仍然构建失败

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

14 个答案:

答案 0 :(得分:17)

尝试运行react-native upgrade

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

答案 1 :(得分:7)

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

lsof -n -i4TCP:8081

答案 2 :(得分:7)

1.转到文件 - &gt;项目设置 2.单击“高级”按钮 3.选择&#34;自定义&#34;并选择&#34;相对于工作区&#34;在拉下来 4.Change&#34; Build / Products&#34; to&#34; build / Build / Products&#34; 5.点击完成,完成enter image description here

答案 3 :(得分:5)

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

好消息是我提交了a pull request that fixes the problem.请继续投票,以便我们在重命名时不会担心事情会发生。

答案 4 :(得分:4)

  1. 在Xcode中打开您的react-native项目
  2. 使用项目名称创建新架构。
  3. 问题将得到解决 enter image description here

答案 5 :(得分:3)

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

未设置产品包标识符

您需要为Project和2 Targets设置它

enter image description here

答案 6 :(得分:2)

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

sudo react-native init ProjectName

sudo chmod 777 ProjectName

cd ProjectName
sudo react-native run-ios 

答案 7 :(得分:1)

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

这可以通过App Store&gt;完成。 Updates

答案 8 :(得分:0)

打开您的Xcode项目

运行它

您应该有来自RCTSRWebSocket.m

的2个错误

将add(void)添加到两行的开头:

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

成为

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

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

答案 9 :(得分:0)

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

- (void)setRefreshControl:(RCTRefreshControl *)refreshControl
{
  if (refreshControl) {
    [refreshControl removeFromSuperview];
  }
  refreshControl = refreshControl;
  [self addSubview:refreshControl];
}

答案 10 :(得分:0)

我解决了我的问题,如果你处于相同状态,你可以试试。

我遇到了同样的错误:

  

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

当我从learning react native克隆现有的反应原生项目时。

  1. 我在不同目录中初始化(使用{react-native init yourProjectName})具有相同名称的新项目

  2. 将每个有用的* .ios.js文件从我在别处克隆的项目复制到这个新项目。

  3. 这适合我。

答案 11 :(得分:0)

编辑文件,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

答案 12 :(得分:0)

对我来说,我的问题是Mcafee在端口8081上运行,因此我按照此答案https://stackoverflow.com/a/50649969/5323419在不同的端口上运行该应用程序 基本上:

react-native run-ios --port 1234  react-native开始--port 1234

我正在使用React native 0.55 +

答案 13 :(得分:0)

对我有用的是从ios目录运行while(true) { char *theWord = NULL; size_t len = 0; printf("ENTER A WORD\n"); size_t len_read = getline(&theWord, &len, stdin); printf("%s\n", theWord); NSString *sampleWord = [NSString stringWithCString:theWord encoding:NSUTF8StringEncoding]; NSInteger wc; NSRange range = [checker checkSpellingOfString:sampleWord startingAt:0 language:@"ko" wrap:NO inSpellDocumentWithTag:0 wordCount:&wc]; if (range.location == NSNotFound) { printf("Correct Spelling\n"); } else { printf("Bad Spelling. Incorrect Spelling at\n"); NSLog(@"The range: %@", NSStringFromRange(range)); } fflush(stdin); free(theWord); }