一臭埋、Application has not been registered和Could not connect to development sever
? 這兩個錯誤都是指你的項目未與react-native的服務(wù)器鏈接上
? 1、 一種在夜神模擬器上調(diào)試的方法:
? ? 解決方法有兩種发笔,一種重新運(yùn)行你的項目,在cmd里在你項目的路徑下輸入命令react-native run-android杆兵;另一種是新開一個cmd還是在當(dāng)前項目路徑下使用命令 react-native start或者npm start琅攘,開啟react-native服務(wù)器玩般,再reload刷新一下即可,最后結(jié)果就如下圖所示啦屿岂,成功可以重新實時刷新修改項目的頁面內(nèi)容啦~用哪種方式看個人喜好咯
2践宴、一種真機(jī)上調(diào)試的方法:
啰嗦一下
真機(jī)調(diào)試的方法是?
第一步:打開手機(jī)的開發(fā)者模式,當(dāng)然每個機(jī)型的打開開發(fā)者的方式不同爷怀,具體度娘一下就知道啦~
第二步:手機(jī)用數(shù)據(jù)線和電腦鏈接上阻肩,還是老規(guī)據(jù),在cmd里輸入adb devices,如顯示圖下所示的樣式烤惊,即表示真機(jī)已連接上啦~
注:如果你中途離開乔煞,拔掉了你的手機(jī),也不用擔(dān)心得重新react-native run-android柒室,又得百無聊賴的等好久渡贾,你可以使用命令在cmd里是使用命令adb reverse tcp:8081 tcp:8081,即可重新鏈接上重新實時刷新調(diào)試
如果在真機(jī)上也遇見上面類似的問題雄右,也可以使用上面的老套路:
重新運(yùn)行你的項目空骚,在cmd里在你項目的路徑下輸入命令react-native run-android;或者是新開一個cmd還是在當(dāng)前項目路徑下使用命令 react-native start或者npm start擂仍,開啟react-native服務(wù)器
二囤屹、如果你也出現(xiàn)了像下圖中的500錯誤,那你就得好好檢查你的語法或者別的逢渔。??
如果你添加圖片的話肋坚,你得好好檢查一下你的文件路徑有沒有出錯,樣式格式有沒有寫錯复局;
如果你項目入口路徑冲簿,注意看下你的書寫格式有沒有錯誤,得一一對應(yīng)亿昏,如下圖所示:
注: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文件無法刪除導(dǎo)致的角钩,
解決辦法:
進(jìn)入項目文件夾下手動刪除android\app\build文件夾內(nèi)的所有文件后再次運(yùn)行吝沫,這是由于插件重新加載會需要刪除build里的東西,但是好像不知道為什么老是會刪除失敗递礼,就需要我們手動刪除啦~惨险,一般用windows環(huán)境會出現(xiàn)的問題,不一定是全部~
四脊髓、有些時候覺得自己的node_modules有問題
你可以在項目里打開cmd辫愉,使用命令rm -fr node_modules/,就可以刪除npm環(huán)境
你可以在項目里打開cmd将硝,使用命令npm i恭朗,可以安裝npm環(huán)境
這樣你就可以有全新的npm環(huán)境啦~
五、最近在用node.js里的websocket依疼,它的簡單小栗子~
首先你得在你新建一個空項目:
安裝node的websocket痰腮,命令是如下兩個,同樣在cmd里運(yùn)行律罢,同樣是在項目文件下
npm i express -S
npm i ws -S
服務(wù)端代碼:
客戶端:
<!DOCTYPE html>
<html>
<head>
? ? <meta charset="utf-8" />
? ? <script>
? ? ? ? ?let ws=new WebSocket('ws://localhost:9999');
? ? ? ? var sendMessage = "";
? ? ? ? // onopen是客戶端與服務(wù)端建立連接后觸發(fā)
? ? ? ? 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是當(dāng)服務(wù)端給客戶端發(fā)來消息的時候觸發(fā)
? ? ? ? ws.onmessage = function (res) {
? ? ? ? ? ? console.log(res); // 打印的是MessageEvent對象
? ? ? ? ? ? // 真正的消息數(shù)據(jù)是 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,不知道怎么引用代碼,只能呈現(xiàn)效果這樣啦~
使用方法:
在這個項目的路徑使用cmd命令node sever.js沧踏,這里的server.js是服務(wù)器代碼的名字
在用兩個不同的瀏覽器開啟客戶端的html文件歌逢,你就可以試試有意思的效果啦~,這個也可用不同的兩個電腦去運(yùn)行客戶端悦冀,
不過得改一下這里的ip地址趋翻,在局域網(wǎng)內(nèi)能訪問到~
六、一般調(diào)試方法
1盒蟆、像我比較習(xí)慣用alert輸出踏烙,看方法有沒有運(yùn)行到這里
2、頁面改變樣式調(diào)試的話历等,一般習(xí)慣用backgroundColor來查看布局位置讨惩,接著用相應(yīng)的屬性去控制
3、比較高大上的調(diào)試方法沒怎么用過寒屯,就不說啦荐捻,不然會誤人子弟的~~~