JS服务器无法识别,继续构建

时间:2017-11-16 23:55:03

标签: javascript android gradle react-native react-native-android

环境

Windows 10

Npm 5.5.1

react-native-cli 2.0.1

react-native 0.50.3

Genymotion Google Nexus 7 - 6.0.0 API 23

Android内容:

Sdk版本:26

buildToolsVersion '26 .0.2'

TargetsdkVersion:26

编译“com.android.support:appcompat-v7:26.0.2”

我已经运行了npm start --reset-cache以及react-native start --reset-cache但是我不断识别JS服务器,继续构建。这可以防止打包程序在我的模拟器上运行之前捆绑资产。

我在这篇文章中遵循了解决方案1:

https://github.com/facebook/react-native/issues/9136#issuecomment-306486102

以及这一个:

Unable to recognize JS server

我使用react-native init APP启动了这个项目。使用此错误已经无法构建它。检查这里和使用npm cache clean和react-native start --reset-cache提到的其他站点的serval帖子,这似乎没有帮助我继续得到相同的错误。我曾经一次顺利运行,但我改变了一个npm包,我想我又把它弄坏了。任何帮助,将不胜感激。我还更新了gradle版本并将其同步到项目中

下面是我正在经历的一些截图...

Emulator Output Bash Output

**代码**

index.js

import { AppRegistry } from 'react-native';
import App from './App';

AppRegistry.registerComponent('hihi', () => App);

App.js     / **      *示例React Native App      * https://github.com/facebook/react-native      * @流      * /

import React, { Component } from 'react';
import {
  Platform,
  StyleSheet,
  Text,
  View
} from 'react-native';

const instructions = Platform.select({
  ios: 'Press Cmd+R to reload,\n' +
    'Cmd+D or shake for dev menu',
  android: 'Double tap R on your keyboard to reload,\n' +
    'Shake or press menu button for dev menu',
});

export default class App 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 App.js
        </Text>
        <Text style={styles.instructions}>
          {instructions}
        </Text>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  },
});

app.json

{
  "name": "hihi",
  "displayName": "hihi"
}

.babelrc

{
  "presets": ["react-native"]
}

package.json

{
    "name": "hihi",
    "version": "0.0.1",
    "private": true,
    "scripts": {
        "start": "node node_modules/react-native/local-cli/cli.js start",
        "test": "jest"
    },
    "dependencies": {
        "react": "16.0.0",
        "react-native": "0.50.3",
        "watchman": "^0.1.8"
    },
    "devDependencies": {
        "babel-jest": "21.2.0",
        "babel-polyfill": "^6.26.0",
        "babel-preset-es2015": "^6.24.1",
        "babel-preset-react-native": "4.0.0",
        "babel-register": "^6.26.0",
        "jest": "21.2.1",
        "react-test-renderer": "16.0.0"
    },
    "jest": {
        "preset": "react-native"
    }
}

更新更新

我想通了,这也是这篇文章和这个解决方案的建议的组合:

Could not find com.android.tools.build:gradle:3.0.0-alpha1 in circle ci

我需要在两个位置包含google()以及将其切换到端口8082并在模拟器上启用该端口的解决方案。非常感谢你的帮助! =)

5 个答案:

答案 0 :(得分:18)

在类似案例中帮助我的步骤:

  1. 在不同于8081的端口上运行打包程序:react-native start --port 8082 --reset-cache
  2. 在第二个命令提示符窗口中运行命令react-native run-android --port 8082
  3. 出现错误屏幕后点击Ctrl + M
  4. 点击底部的Dev Settings按钮。
  5. 点击Debug server host & port for device按钮。
  6. 撰写localhost:8082并点击OK按钮。
  7. 再次运行命令react-native run-android --port 8082

答案 1 :(得分:1)

当我在端口Install from VSIX上运行另一个进程时,我遇到了这个问题。

  1. 找到流程...
  2. 获取PID,在我的情况下为8081
  3. 终止过程:lsof -i tcp:8081
  4. 再次启动React Native

答案 2 :(得分:0)

就我而言(具有相同的错误),我只是在win CMD(check for reference)中检查了netstat。我的问题是在端口:8081上运行另一个实例,所以我不得不杀死该混蛋。

  1. 关闭所有正在运行的本地服务器实例。
  2. 在Windows上查看杀死:8081进程的参考链接
  3. 重建并重新运行项目。
  4. 利润

答案 3 :(得分:0)

仅更改端口并不能解决问题,而是会创建更多端口,除非您还从设备本身更改了端口。

首先,确认是否是这种情况:

$> netstat -aon|findstr “8081”

现在将其更改为从新的默认端口运行

a)在Windows上更改env变量以为RN设置新端口:

$> SET RCT_METRO_PORT=8083

在RN中用作默认端口,如果未设置,则默认为8081

b)删除旧的反向链接:

$> adb reverse –remove-all

c)为adb设备设置新的反向端口:

$> adb reverse tcp:8083 tcp:8083

d)将设备上的开发设置从默认的8081更改为8083。

运行该应用,然后运行输入keyevent 82, 现在选择 Dev设置>调试服务器主机...>输入新网址: 本地主机:8083

构建并再次运行

答案 4 :(得分:0)

尝试关闭本地服务器程序,例如MAMP,WAMP,OpenServer等。他们可以使用8081端口。