一、Application has not been registered和Could not connect to development sever
这两个错误都是指你的项目未与react-native的服务器链接上
1、 一种在夜神模拟器上调试的方法:
解决方法有两种,一种重新运行你的项目,在cmd里在你项目的路径下输入命令react-native run-android;另一种是新开一个cmd还是在当前项目路径下使用命令 react-native start或者npm start,开启react-native服务器,再reload刷新一下即可,最后结果就如下图所示啦,成功可以重新实时刷新修改项目的页面内容啦~用哪种方式看个人喜好咯
2、一种真机上调试的方法:
啰嗦一下
真机调试的方法是
第一步:打开手机的开发者模式,当然每个机型的打开开发者的方式不同,具体度娘一下就知道啦~
第二步:手机用数据线和电脑链接上,还是老规据,在cmd里输入adb devices,如显示图下所示的样式,即表示真机已连接上啦~
注:如果你中途离开,拔掉了你的手机,也不用担心得重新react-native run-android,又得百无聊赖的等好久,你可以使用命令在cmd里是使用命令adb reverse tcp:8081 tcp:8081,即可重新链接上重新实时刷新调试
如果在真机上也遇见上面类似的问题,也可以使用上面的老套路:
重新运行你的项目,在cmd里在你项目的路径下输入命令react-native run-android;或者是新开一个cmd还是在当前项目路径下使用命令 react-native start或者npm start,开启react-native服务器
二、如果你也出现了像下图中的500错误,那你就得好好检查你的语法或者别的。
如果你添加图片的话,你得好好检查一下你的文件路径有没有出错,样式格式有没有写错;
如果你项目入口路径,注意看下你的书写格式有没有错误,得一一对应,如下图所示:
注:500错误一般要看node.js里的图文界面,看报错具体在哪一行~
三、app:processDebugResources'.
报错信息为:
Error:Execution failed for task ':app:processDebugResources'.
> java.io.IOException: Could not delete path 'XXXXXX\XXXXX\ProjectName\android\app\build\generated\source\r\debug\android'.
build文件无法删除导致的,
解决办法:
进入项目文件夹下手动删除android\app\build文件夹内的所有文件后再次运行,这是由于插件重新加载会需要删除build里的东西,但是好像不知道为什么老是会删除失败,就需要我们手动删除啦~,一般用windows环境会出现的问题,不一定是全部~
四、有些时候觉得自己的node_modules有问题
你可以在项目里打开cmd,使用命令rm -fr node_modules/,就可以删除npm环境
你可以在项目里打开cmd,使用命令npm i,可以安装npm环境
这样你就可以有全新的npm环境啦~
五、最近在用node.js里的websocket,它的简单小栗子~
首先你得在你新建一个空项目:
安装node的websocket,命令是如下两个,同样在cmd里运行,同样是在项目文件下
npm i express -S
npm i ws -S
服务端代码:
客户端:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script>
let ws=new WebSocket('ws://localhost:9999');
var sendMessage = "";
// onopen是客户端与服务端建立连接后触发
var video = document.getElementById("videoSource");
var startV = document.getElementById("startV");
var pauseV = document.getElementById("pauseV");
var endV = document.getElementById("endV");
ws.onopen = function () {
//ws.send('哎呦,不错哦');
// ws.send("video");
};
// onmessage是当服务端给客户端发来消息的时候触发
ws.onmessage = function (res) {
console.log(res); // 打印的是MessageEvent对象
// 真正的消息数据是 res.data
console.log(res.data);
// setMessageInnerHTML(res.data);
// videoPlay();
if (res.data == "video") {
document.getElementById("videoSource").play();
}
if (res.data == "pause") {
document.getElementById("videoSource").pause();
}
if (res.date == "end") {
document.getElementById("videoSource").pause();
document.getElementById("videoSource").currentTime = 0;
}
};
function setMessageInnerHTML(innerHTML) {
document.getElementById('message').innerHTML += innerHTML + '<br/>';
sendMessage = innerHTML;
}
function videoPlay() {
document.getElementById("videoSource").play();
// ws.send("video");
}
function videoPause() {
document.getElementById("videoSource").pause();
// ws.send("pause");
}
function videoEnd() {
document.getElementById("videoSource").pause();
document.getElementById("videoSource").currentTime = 0;
// ws.send("end");
}
// window.onload = function () {
// var i = 0
// //开始播放视频
// startV.onclick = function () {
// video.play();
// ws.send("video");
// if (sendMessage == "video") {
// video.play();
// alert("video")
// }
// console.log(sendMessage);
// }
// //暂停视频播放
// pauseV.onclick = function () {
// video.pause();
// }
// endV.onclick = function () {
// video.pause();
// video.currentTime = 0;
// }
// }
</script>
</head>
<body>
<h1>客户端</h1>
<p id="message"></p>
<video id="videoSource" style="width: 450px;height: 400px;" muted="muted">
<source src="./movie/m1.mp4" type="video/mp4">
</video>
<!-- <video src="./movie/m1.mp4" autoplay="autoplay" style="width: 450px;height: 400px;"></video> -->
<!-- <button id="startV" onclick="videoPlay()">开始</button> -->
<!-- <button id="pauseV" onclick="videoPause()">暂停</button> -->
<!-- <button id="endV" onclick="videoEnd">停止</button> -->
</body>
</html>
效果如上~emmm,不知道怎么引用代码,只能呈现效果这样啦~
使用方法:
在这个项目的路径使用cmd命令node sever.js,这里的server.js是服务器代码的名字
在用两个不同的浏览器开启客户端的html文件,你就可以试试有意思的效果啦~,这个也可用不同的两个电脑去运行客户端,
不过得改一下这里的ip地址,在局域网内能访问到~
六、一般调试方法
1、像我比较习惯用alert输出,看方法有没有运行到这里
2、页面改变样式调试的话,一般习惯用backgroundColor来查看布局位置,接着用相应的属性去控制
3、比较高大上的调试方法没怎么用过,就不说啦,不然会误人子弟的~~~
网友评论