我是反应原生的新生。我试过部署一个" hello world" app根据官方文件。但失败了。
我在这里尝试:
react-native init HelloWorld
初始化我的本地项目(起初我的项目名称为try
,但它是一个保留关键字,因此我更改为HelloWorld
)npm install
react-native run-ios
我的环境是:
10.10.5
4.5
7.2.1
1.0.0
0.28.0
15.1.0
运行命令react-native run-ios
后,出现红色背景错误:
Cound无法连接到开发服务器。
确保以下内容:
- 节点服务器正在运行且在同一网络上可用 - 运行  npm start'来自react-native root
- 在AppDelegate中正确设置节点服务器URL
网址:http://localhost:8081/index.ios.bundle?platform-ios&dev=true
我搜索了谷歌,发现这是一个常见的问题,主要是由于osx 9.0安全策略。
我通读github issue: cound not connect to development server并检查并修改我的项目:
确保NSAppTransportSecurity
设置中的Info.plist
正常。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
尝试将jsCodeLocation
中的AppDelegate.m
从localhost
更改为my local network ip
(事实上,我可以访问我的Chrome浏览器中的jsCodeLocation [localhost],但是我无论如何,根据github问题改变了我的ip,只是尝试)
当我重试命令&#34; react-native run-ios&#34;时,连接错误消失了,但是出现了另一个错误&#34; __ fbBatchedBridge未定义&#34;
无法执行JS调用:__ fbBatchedBridge未定义
RCTFatal + 104 ...
我仔细阅读了github问题:github->facebook/react-native/issues/6282
,并尝试评论以下行github->facebook/react-native/blob/master/packager/react-native-xcode.sh#L15-L18
# if [[ "$PLATFORM_NAME" = "iphonesimulator" ]]; then
# echo "Skipping bundling for Simulator platform"
# exit 0;
# fi
但什么都没发生。有人可以帮忙吗?谢谢。
答案 0 :(得分:0)
您选择的项目名称try
是javascript中的保留字。这将从一开始就产生问题。例如,它将生成类名try
,如下所示:
/**
* Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View
} from 'react-native';
class try extends Component {
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.ios.js
</Text>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
</View>
);
}
}
这将导致错误和不可预测性。尝试使用类似MyApp
之类的东西生成一个新的反应原生应用程序,并再试一次。
答案 1 :(得分:0)
我已经解决了这个问题。
原因简单而愚蠢,
只需在主机中添加localhost 127.0.0.1
,问题就会消失。