Udacity微信小程序課程常見(jiàn)Bug分析

本文章共羅列了以下幾個(gè)問(wèn)題(持續(xù)更新)

  • 天氣小程序中,水平滾動(dòng)scroll無(wú)法成功
  • 調(diào)用接口代碼沒(méi)有報(bào)任何錯(cuò)誤但是沒(méi)起效
  • 騰訊地圖API報(bào)錯(cuò): 此key未開啟webservice功能
  • 騰訊云沒(méi)有了
  • 單步調(diào)試沒(méi)有了
  • 項(xiàng)目二的數(shù)據(jù)庫(kù)兩張關(guān)鍵表
  • 登錄邏輯實(shí)現(xiàn)后報(bào)錯(cuò) ERR_REUEST_PARAM
  • 對(duì)象存儲(chǔ)上傳音頻文件失敗篡腌,報(bào)錯(cuò):ERR_UNSUPPORT_FILE_TYPE
  • 發(fā)送影評(píng)報(bào)錯(cuò): ERR_TRUNCATED_WRONG_VALUE_FOR_FIELD
  • 以下哪個(gè)函數(shù)類型的參數(shù)的參數(shù)不為空

由于簡(jiǎn)書不支持頁(yè)內(nèi)目錄炼列,所以只能自行查找窜锯。

天氣小程序中扫尖,水平滾動(dòng)scroll無(wú)法成功

很多學(xué)員在學(xué)習(xí)天氣小程序的過(guò)程中伐坏,遇到下圖紅色區(qū)域在電腦上無(wú)法橫向滾動(dòng)的問(wèn)題,這主要是因?yàn)?strong>部分電腦型號(hào)的微信開發(fā)工具再次方面存在缺陷击胜,可嘗試使用微信開發(fā)工具中的遠(yuǎn)程調(diào)試功能,在手機(jī)真機(jī)上進(jìn)行預(yù)覽役纹,多數(shù)情況下是可以橫向滾動(dòng)的偶摔,所以以真機(jī)為準(zhǔn)

img1.jpg

調(diào)用接口代碼沒(méi)有報(bào)任何錯(cuò)誤但是沒(méi)起效

多數(shù)情況下代碼沒(méi)有起效并不是沒(méi)有錯(cuò)誤促脉,而是有錯(cuò)誤你沒(méi)有去捕獲辰斋,可以通過(guò)幾種方式去判斷是否有錯(cuò)誤

  1. 在source里設(shè)置斷點(diǎn)
    在source里設(shè)置斷點(diǎn),看代碼是否進(jìn)入了success部分瘸味,如果沒(méi)有進(jìn)入你想要執(zhí)行的success代碼宫仗,說(shuō)明這個(gè)接口沒(méi)有成功,那么很有可能是進(jìn)入了fail中旁仿,而課程中可能并沒(méi)有寫fail回調(diào)函數(shù)藕夫,需要我們自己添加。如下圖。


    img2.png
  2. 添加fail回調(diào)函數(shù)
    在調(diào)用接口的適當(dāng)位置添加fail回調(diào)函數(shù)毅贮,注意需要將接口的返回值作為參數(shù)在回調(diào)函數(shù)中輸出办悟,簡(jiǎn)單說(shuō)就是(errResult) => {console.log(errResult)}通過(guò)這種方式在控制臺(tái)輸出調(diào)用接口返回的錯(cuò)誤。如下圖滩褥,我們可以看到在控制臺(tái)里輸出了對(duì)應(yīng)內(nèi)容病蛉。

    img3.png

  3. 看Network的Response
    如果是調(diào)用接口發(fā)生的錯(cuò)誤,那么在network中的response都可以直接看到返回值瑰煎,如下圖所示铺然。


    img4.png

騰訊地圖API報(bào)錯(cuò): 此key未開啟webservice功能

此錯(cuò)誤是由于API設(shè)置不正確導(dǎo)致的,需要進(jìn)行設(shè)置酒甸,勾選WebServiceAPI并保存即可魄健,可以設(shè)置授權(quán)IP0.0.0.0-255.255.255.255烘挫,如下圖诀艰。

img5.png

騰訊云沒(méi)有了

騰訊云只需要右鍵菜單欄 -> 自定義工具管理 -> 勾選騰訊云 -> 點(diǎn)擊確定即可。如下圖饮六。


img6.png

單步調(diào)試沒(méi)有了

2018年7月12日開始其垄,微信開發(fā)工具由于安全問(wèn)題就不提供單步調(diào)試功能了,但是我們?cè)谕瓿晌⑿判〕绦蛘n程時(shí)單步調(diào)試還是非常需要的卤橄,所以可以下載最后一個(gè)有單步調(diào)試的開發(fā)工具版本20180612,下載地址如下:
[mac]https://dldir1.qq.com/WechatWebDev/1.0.0/201806120/wechat_devtools_1.02.1806120.dmg
[win32]https://dldir1.qq.com/WechatWebDev/1.0.0/201806120/wechat_devtools_1.02.1806120_ia32.exe
[win64]https://dldir1.qq.com/WechatWebDev/1.0.0/201806120/wechat_devtools_1.02.1806120_x64.exe

項(xiàng)目二的數(shù)據(jù)庫(kù)兩張關(guān)鍵表

在做項(xiàng)目二時(shí)需要像課程二一樣使用mysql數(shù)據(jù)庫(kù)和騰訊云绿满,故需要用到兩張用于登錄和用戶信息相關(guān)的數(shù)據(jù)庫(kù)表cAppinfocSessionInfo,相關(guān)語(yǔ)句如下窟扑,可以在數(shù)據(jù)庫(kù)中的SQL模塊執(zhí)行該語(yǔ)句喇颁。

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";

CREATE TABLE `cAppinfo` (
  `appid` char(36) CHARACTER SET latin1 DEFAULT NULL,
  `secret` char(64) CHARACTER SET latin1 DEFAULT NULL,
  `ip` char(20) CHARACTER SET latin1 DEFAULT NULL,
  `login_duration` int(11) DEFAULT NULL,
  `qcloud_appid` char(64) CHARACTER SET latin1 DEFAULT NULL,
  `session_duration` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;


CREATE TABLE `cSessionInfo` (
  `open_id` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `uuid` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `skey` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `last_visit_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `session_key` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `user_info` varchar(2048) COLLATE utf8mb4_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='會(huì)話管理用戶信息';

ALTER TABLE `cSessionInfo`
  ADD PRIMARY KEY (`open_id`),
  ADD KEY `openid` (`open_id`) USING BTREE,
  ADD KEY `skey` (`skey`) USING BTREE;

COMMIT;
img7.png

登錄邏輯實(shí)現(xiàn)后報(bào)錯(cuò) ERR_REUEST_PARAM

課程二中按照視頻實(shí)現(xiàn)登錄邏輯之后會(huì)遇到報(bào)錯(cuò)ERR_REUEST_PARAM的問(wèn)題,這是由于騰訊云出于安全考慮嚎货,即日起橘霎,我們不再幫助用戶無(wú)感知的申請(qǐng)騰訊云云 API 密鑰。官方給出的解釋如下:殖属。
出于安全考慮姐叁,即日起,我們不再幫助用戶無(wú)感知的申請(qǐng)騰訊云云 API 密鑰洗显,受此影響外潜,騰訊云微信小程序解決方案 Wafer2 提供的 sdk.config.json 中的 qcloudSecretIdqcloudSecretKey 字段將為空,這會(huì)導(dǎo)致登錄失敗挠唆,并返回錯(cuò)誤提示:ERR_REQUEST_PARAM处窥。

你可以通過(guò)以下兩種方式修復(fù)該問(wèn)題:
1. 關(guān)閉騰訊云代理登錄,使用微信小程序 AppID 和 AppSecret 登錄:

修改 server/config.js 中的 useQcloudLoginfalse玄组,并填寫上 appIdappSecret 字段(分別為微信小程序的 AppID 和 AppSecret)滔驾,重新部署代碼即可谒麦。

2. 手動(dòng)填寫騰訊云云 API 密鑰:

登錄騰訊云云 API 密鑰控制臺(tái)申請(qǐng)?jiān)?API 密鑰,并在 server/config.jsCONF 中添加如下三個(gè)字段:

    qcloudAppId: '你的騰訊云 AppID',
    qcloudSecretId: '你的騰訊云 SecretId',
    qcloudSecretKey: '你的騰訊云 SecretKey',

重新部署代碼即可生效嵌灰。
由于上傳接口也會(huì)使用到騰訊云云 API 密鑰弄匕,如遇到上傳接口報(bào)錯(cuò),也請(qǐng)參考如上 2 的方法排查沽瞭。
對(duì)您使用帶來(lái)的不便迁匠,敬請(qǐng)諒解。

上述官方地址: https://github.com/tencentyun/wafer2-quickstart/issues/13

對(duì)象存儲(chǔ)上傳音頻文件失敗驹溃,報(bào)錯(cuò):ERR_UNSUPPORT_FILE_TYPE

在做項(xiàng)目二時(shí)可能會(huì)遇到上傳音頻到對(duì)象存儲(chǔ)失敗城丧,報(bào)ERR_UNSUPPORT_FILE_TYPE錯(cuò)誤的時(shí)候,如下圖所示豌鹤。

6031543412225_.pic.jpg

在通過(guò)查看wafer源碼亡哄,我在server/node_modules/wafer-node-sdk/lib/upload/index.js中找到如下代碼:

 const allowMimeTypes = config.cos.mimetypes
            ? config.cos.mimetypes
            : ['image/jpeg', 'image/jp2', 'image/jpm', 'image/jpx', 'image/gif', 'image/bmp', 'image/png', 'audio/mpeg', 'audio/mp3', 'audio/m4a', 'application/pdf']
        if (!resultType || !allowMimeTypes.includes(resultType.mime)) {
            debug('%s: 不支持類型的文件', ERRORS.ERR_UNSUPPORT_FILE_TYPE, imageFile)
            throw new Error(ERRORS.ERR_UNSUPPORT_FILE_TYPE)
        }

這就是與報(bào)錯(cuò)相關(guān)的部分,即我們要求的文件格式不支持布疙,所以解決辦法如下蚊惯,在server/config.js中的cos中添加如下代碼:mimetypes: ['audio/x-aac', 'audio/aac', 'audio/mpeg', 'video/webm', 'audio/mp3', 'audio/m4a'],重新上傳代碼即可灵临。

image.png

發(fā)送影評(píng)報(bào)錯(cuò): ERR_TRUNCATED_WRONG_VALUE_FOR_FIELD

這個(gè)錯(cuò)誤是由于發(fā)送評(píng)論中或者用戶名中含有中文字符截型,而我們創(chuàng)建數(shù)據(jù)庫(kù)時(shí)沒(méi)有指定字符集,默認(rèn)是Latin儒溉,該字符集是不支持中文的宦焦,我們需要修改為utf8mb4

數(shù)據(jù)庫(kù)字符集

comment字符集

movie字符集

collection字符集

以下哪個(gè)函數(shù)類型的參數(shù)的參數(shù)不為空

image.png

注意題目問(wèn)的是參數(shù)的參數(shù)

  1. Page的函數(shù)類型的參數(shù)指的是onLoad顿涣,而onLoad的參數(shù)是Object query不為空波闹,如下圖所示。相關(guān)鏈接:https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/page.html#data
    page.onLoad
  2. Page的函數(shù)類型的參數(shù)指的是onPullDownRefresh涛碑,而onPullDownRefresh的參數(shù)為空精堕,如下圖所示。
    Page.onPullDownRefresh
  3. setData()的函數(shù)類型的參數(shù)指的是callback蒲障,而callback的參數(shù)為空锄码,這個(gè)需要編寫相關(guān)代碼進(jìn)行測(cè)試。
this.setData(
    {
      data: 'data'
    }, (res) => {
    console.log(res)
})
// 控制臺(tái)返回的是undefined

相關(guān)鏈接:https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/page.html#pageprototypesetdataobject-data-function-callback

image.png

  1. wx.request的函數(shù)類型的參數(shù)指的是complete晌涕,而complete的參數(shù),答案認(rèn)為是空痛悯,而測(cè)試結(jié)果表明可以獲得到值余黎,代碼如下。這個(gè)需要編寫相關(guān)代碼進(jìn)行測(cè)試载萌。
wx.request({
  url: 'test.php', //僅為示例惧财,并非真實(shí)的接口地址
getNow(callback){
    wx.request({
      url: 'https://test-miniprogram.com/api/weather/now', //僅為示例巡扇,并非真實(shí)的接口地址
      data: {
        city: '上海市'
      },
      header: {
        'content-type': 'application/json' // 默認(rèn)值
      },
      success: res => {
        console.log('wx.request>success:',res.data.result)
        let result = res.data.result;
        this.setNow(result);
        this.setHourlyWeather(result);
        this.setToday(result);
      },
      fail: res => {
        console.log('wx.request>fail:', res.data.result)
      },
      complete: res => {
        console.log('wx.request>complete:', res.data.result)
        if (callback) {
          callback()
        }
        callback && callback()
      }
    })
  }
// wx.request>success: {now: {…}, today: {…}}
// wx.request>complete: {now: {…}, today: {…}}
// 控制臺(tái)返回的是undefined

相關(guān)鏈接:https://developers.weixin.qq.com/miniprogram/dev/api/network/request/wx.request.html

image.png

  1. wx.request的函數(shù)類型的參數(shù)指的是success,而success的參數(shù)不為空垮衷,代碼同上厅翔。

  2. getNow的函數(shù)類型的參數(shù)指的是callback,而callback的參數(shù)為空搀突,代碼如下刀闷。

    image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市仰迁,隨后出現(xiàn)的幾起案子甸昏,更是在濱河造成了極大的恐慌,老刑警劉巖徐许,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件施蜜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡雌隅,警方通過(guò)查閱死者的電腦和手機(jī)翻默,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)恰起,“玉大人修械,你說(shuō)我怎么就攤上這事〈甯祝” “怎么了祠肥?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)梯皿。 經(jīng)常有香客問(wèn)我仇箱,道長(zhǎng),這世上最難降的妖魔是什么东羹? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任剂桥,我火速辦了婚禮,結(jié)果婚禮上属提,老公的妹妹穿的比我還像新娘权逗。我一直安慰自己,他們只是感情好冤议,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布斟薇。 她就那樣靜靜地躺著,像睡著了一般恕酸。 火紅的嫁衣襯著肌膚如雪堪滨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天蕊温,我揣著相機(jī)與錄音袱箱,去河邊找鬼遏乔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛发笔,可吹牛的內(nèi)容都是我干的盟萨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼了讨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼捻激!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起量蕊,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤铺罢,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后残炮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體韭赘,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年势就,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了泉瞻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡苞冯,死狀恐怖袖牙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情舅锄,我是刑警寧澤鞭达,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站皇忿,受9級(jí)特大地震影響畴蹭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鳍烁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一叨襟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧幔荒,春花似錦糊闽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至姚垃,卻和暖如春念链,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工钓账, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人絮宁。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓梆暮,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親绍昂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子啦粹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,103評(píng)論 1 32
  • 用兩張圖告訴你,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料窘游? 從這篇文章中你...
    hw1212閱讀 12,728評(píng)論 2 59
  • 1唠椭、通過(guò)CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明先生_X自主閱讀 15,982評(píng)論 3 119
  • 喜歡一切“剛剛好” 比如一覺(jué)醒來(lái)手機(jī)剛剛充好電 比如*開電扇剛好也開了你頭頂上的那個(gè) 就像一切都有了充足的準(zhǔn)備 也...
    努力晴朗的玻璃閱讀 184評(píng)論 0 0
  • 2018年5月14日 明天去武漢,這次會(huì)去一個(gè)月忍饰,我是9號(hào)理的發(fā)贪嫂,老公怕別人給我的頭發(fā)剪的不好看,今天晚上特...
    杜書曉閱讀 129評(píng)論 0 1