我正在尝试让ES6 react-native-webpack-server运行
在Android模拟器上。不同之处在于我已将package.json
和build.grade
升级为使用react 0.18.0
,并在启动时收到此错误。据我所知,AppRegistry
被正确导入。即使我要注释掉代码,这个错误仍然会出现。这在iOS上没有问题。
我做错了什么?
编辑:在尝试了其他支持0.18.0的样板后,我仍然遇到同样的问题。
答案 0 :(得分:35)
我刚刚升级到react-native 0.18.1
今天很难在0.19.0-rc
预发布版本中遇到一些对等依赖项问题。
回到你的问题,我做的是
cd android
sudo ./gradlew clean
然后回到工作目录并运行
react-native run-android
升级后你也应该重启你的npm。
希望这适合你。
答案 1 :(得分:14)
我在iOS上遇到了同样的问题,原因是我的 index.ios.js 不正确(因为我复制粘贴其中一个示例而不查看其内容),它以模块导出声明结束
PK
而不是预期的
exports.title = ...
exports.description = ...
module.exports = MyRootComponent;
我猜想你可以在index.android.js的android上遇到同样的问题。
答案 2 :(得分:8)
此问题的一个主要原因可能是您要安装插件而忘记链接的地方。
尝试一下:
react-native link
重新运行您的应用。
希望这会有所帮助。请在评论中告诉我。谢谢。
答案 3 :(得分:7)
我只需添加
就解决了这个问题import { AppRegistry } from "react-native";
import App from "./App";
import { name as appName } from "./app.json";
AppRegistry.registerComponent(appName, () => App);
到我的 index.js
确保您的 index.js
中存在答案 4 :(得分:3)
希望这可以让人头疼。升级我的react-native版本后出现此错误。令人困惑的是它只出现在机器人方面。
我的文件结构包含index.ios.js
和index.android.js
。两者都包含代码:
AppRegistry.registerComponent('App', () => App);
我必须做的是,在android/app/src/main/java/com/{projectName}/MainApplication.java
中,将index
更改为index.android
:
@Override
protected String getJSMainModuleName() {
return "index.android"; // was "index"
}
然后在app/build/build.gradle
中,将entryFile
从index.js
更改为index.android.js
project.ext.react = [
entryFile: "index.android.js" // was index.js"
]
答案 5 :(得分:2)
我不知道为什么,但是当我从index.android.js中包含的index.js文件中移动AppRegistry.registerComponent直接驻留在index.android.js中时,它似乎有效。
答案 6 :(得分:2)
对我来说,我的问题是捆绑时错误的条目文件。
我使用App.js作为我的入门文件,因此App无法找到AppRegistry
<强>正确:强>
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/
<强>不正确:强>
react-native bundle --platform android --dev false --entry-file App.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/
答案 7 :(得分:1)
如果您使用的是某些示例,则可能无效
这是我的滚动视图版本
.Skip(1)
答案 8 :(得分:1)
我在Genymotion上卸载了它。然后运行DatabaseHelper db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//add this line in your code..
db = new DatabaseHelper(this);
et1= (EditText) findViewById(R.id.eTemail);
et2 = (EditText) findViewById(R.id.eTpassword);
r1 = (RelativeLayout) findViewById(R.id.colorChange);
}
来构建应用程序。它奏效了。在运行react-native run-android
之前先试试这个,它会为你节省很多时间。
答案 9 :(得分:1)
仅用于重新启动计算机即可对其进行修复。 (我的错误是“模块appRegistry不是注册的可调用模块(调用runapplication)js引擎:hermes”)
这里可能已经有用的另一个最重要的答案就是杀死节点进程:
killall -9 node
[Module AppRegistry is not registered callable module (calling runApplication)]
答案 10 :(得分:1)
在摆弄node_modules
目录中的依赖项代码之后,我遇到了这个问题-在iOS和Android上,在Mac上进行开发。
我用以下方法解决了它:
rm -rf node_modules
npm i
npx pod-install ios
基本上,这只是重新安装依赖项。
答案 11 :(得分:0)
我通过以下操作解决了这个问题:
答案 12 :(得分:0)
通过执行这些命令(操作系统:Windows 10)解决了我的问题。
cd android
gradlew clean
cd..
npx react-native run-android
答案 13 :(得分:0)
如果您使用的是Windows计算机,则需要先进行cd android
然后./gradlew clean
然后运行react-native run-android
答案 14 :(得分:0)
我多次遇到同样的问题。以下解决方案解决了我的问题。我已经根据复杂程度列出了它们。
重启电脑看看问题是否解决
如果它仍然存在,尝试杀死运行端口通常为8080的进程
netstat -ano | findstr 8080
taskkill /F /PID <PID>
如果它仍然存在,请转到“android”目录,然后继续
光盘安卓
./gradlew 干净
和起始节点
npm start
然后运行 npx react-native run android
或 expo stat
并按“a”
希望您能解决上述问题。
答案 15 :(得分:0)
这可能是因为来自 node、pod、gradle 任何地方的任何缓存问题,最好进行完整的清理,为此使用 react native clean project
答案 16 :(得分:0)
检查您是否没有直接在 SafeAreaView 中渲染某些内容
确保您遵循此格式
<SafeAreaView>
<View>
{children}
</View>
</SafeAreaView>
答案 17 :(得分:0)
我在Expo中遇到此错误,因为我导出了错误的组件名称,例如
const Wonk = props => (
<Text>Hi!</Text>
)
export default Stack;
答案 18 :(得分:0)
npm start---reset-cache
端口可能已在使用中。当我第一次运行react-native run-android然后npm start时,我遇到类似的问题。我这样解决:首先,获取在端口8081中运行的进程的ID: 须藤lsof -i:8081
答案 19 :(得分:0)
如果您在使用android的Windows中遇到此错误
打开您的根目录app文件夹,然后移至android文件夹。
cd android
gradlew clean
再次启动您的应用 react-native运行Android
好用的
答案 20 :(得分:0)
重新启动打包程序对我有用。 只需杀死React Native打包程序并再次运行即可。
答案 21 :(得分:0)
对我而言,我以这种方式与react native链接:react-native链接
答案 22 :(得分:0)
对我来说,这是一个问题,反应本机依赖于下一版本的反应包,而在我的package.json中指定了旧版本。升级我的反应版本解决了这个问题。
答案 23 :(得分:0)
通过增加我的inotify max_user_watches修复了我的问题:
sudo sysctl fs.inotify.max_user_watches=1280000
答案 24 :(得分:0)
在我的情况下,我的index.js
只是错误地指向了另一个js而不是我的Launcher js,它不包含AppRegistry.registerComponent()
。
因此,请确保文件index.js
指向该类。