本文章共羅列了以下幾個(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)。
調(diào)用接口代碼沒(méi)有報(bào)任何錯(cuò)誤但是沒(méi)起效
多數(shù)情況下代碼沒(méi)有起效并不是沒(méi)有錯(cuò)誤促脉,而是有錯(cuò)誤你沒(méi)有去捕獲辰斋,可以通過(guò)幾種方式去判斷是否有錯(cuò)誤
-
在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 -
添加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 -
看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)IP
,0.0.0.0-255.255.255.255
烘挫,如下圖诀艰。
騰訊云沒(méi)有了
騰訊云只需要右鍵菜單欄 -> 自定義工具管理 -> 勾選騰訊云 -> 點(diǎn)擊確定即可。如下圖饮六。
單步調(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ù)表cAppinfo
和cSessionInfo
,相關(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;
登錄邏輯實(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
中的 qcloudSecretId
和 qcloudSecretKey
字段將為空,這會(huì)導(dǎo)致登錄失敗挠唆,并返回錯(cuò)誤提示:ERR_REQUEST_PARAM
处窥。
你可以通過(guò)以下兩種方式修復(fù)該問(wèn)題:
1. 關(guān)閉騰訊云代理登錄,使用微信小程序 AppID 和 AppSecret 登錄:
修改 server/config.js
中的 useQcloudLogin
為 false
玄组,并填寫上 appId
和 appSecret
字段(分別為微信小程序的 AppID 和 AppSecret)滔驾,重新部署代碼即可谒麦。
2. 手動(dòng)填寫騰訊云云 API 密鑰:
登錄騰訊云云 API 密鑰控制臺(tái)申請(qǐng)?jiān)?API 密鑰,并在 server/config.js
的 CONF
中添加如下三個(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í)候,如下圖所示豌鹤。
在通過(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']
,重新上傳代碼即可灵临。
發(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
。
以下哪個(gè)函數(shù)類型的參數(shù)的參數(shù)不為空
注意題目問(wèn)的是參數(shù)的參數(shù)
-
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 -
Page
的函數(shù)類型的參數(shù)指的是onPullDownRefresh
涛碑,而onPullDownRefresh
的參數(shù)為空精堕,如下圖所示。
Page.onPullDownRefresh -
setData()
的函數(shù)類型的參數(shù)指的是callback
蒲障,而callback
的參數(shù)為空锄码,這個(gè)需要編寫相關(guān)代碼進(jìn)行測(cè)試。
this.setData(
{
data: 'data'
}, (res) => {
console.log(res)
})
// 控制臺(tái)返回的是undefined
-
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
wx.request
的函數(shù)類型的參數(shù)指的是success
,而success
的參數(shù)不為空垮衷,代碼同上厅翔。-
getNow
的函數(shù)類型的參數(shù)指的是callback
,而callback
的參數(shù)為空搀突,代碼如下刀闷。
image.png