騰訊,疼訊,很疼.
請慎重看騰訊給出的文檔,最好做一個筆記.
我只能說我能力有限,在騰訊雲小程序的文檔中跳了n天.
最后還是覺得記錄下來,以防止我的cpu過載給燒了.
此文檔是對<小程序解決方案開通指引>
https://cloud.tencent.com/document/product/619/11447
的有力補充
寫作時間為 2017年11月25日10:30. 參考時請注意時效.
第一步, 疼訊文檔之亂 [非正文,吐個槽]
我在這里記錄,初入門者慎入
, 直接進入第二步即可.
鄙視騰訊的^C^Ver
們, 借助github那是一個瘋狂呀.
新文檔里面套舊文檔的鏈接.
代碼庫地址鏈接到文檔地址.
看的我是各種懵逼.
具體內容請查看我博客中"小程序,疼訊騰訊的文檔之亂".
第二步, 通過小程序的微信公眾平台啟用騰訊雲開發
參考:https://cloud.tencent.com/document/product/619/11447 有修改.
打開微信小程序管理后台
https://mp.weixin.qq.com/
(注意: 公眾號和小程序使用相同的登錄入口, 小程序賬號登錄后是小程序的后台, 公眾號登錄后是公眾號的后台)
會登錄到騰訊雲的控制台(截圖有部分功能使用過后就不能重現的,直接就使用了騰訊的截圖,會有一些區別,作為參考是沒有問題的).
https://console.qcloud.com/lav2/dev
(此圖使用騰訊截hen圖jiu,新的控制台樣式見下一張圖)
開通騰訊小程序開發環境的截圖(截圖日期2017-11-25)
此圖表示開發環境部署完成.
第二步 下載Demo到本地
從github上下載demo代碼到本地目錄
項目地址: https://github.com/tencentyun/wafer2-quickstart-nodejs
代碼已經fork到我的github上.如果以上鏈接不是代碼可以直接使用: https://github.com/acharzuo/wafer2-quickstart-nodejs
git clone https://github.com/tencentyun/wafer2-quickstart-nodejs.git
進入git目錄執行(本地需要有node環境.未安裝的請百度)
# 切換到 server 文件夾
cd server
# 安裝依賴
npm install
第三步, 修改配置參數
打開/server/config.js, 修改數據庫密碼為小程序的appid.
點擊右上角的上傳騰訊雲
查看騰訊雲狀態.
選擇復制開發環境request域名.
打開/client/config.js 修改主機名.
至此小程序基於騰訊雲的開發部署完成…. 然….
點擊登錄, 成功!
點擊上傳圖片??? ,圖片哪里去了. 后議. 什么, 你提示上傳成功沒有顯示出來, 不好意思我也沒有. 你要理解馬哥.
打開信道/發送消息,成功.
不該有的第四步 圖片上傳成功打開失敗的詭異之舉.
當然,代碼是沒有詭異的.
分析原因
- 分析一下, 打開小程序的控制台 console. 發現一有一個錯誤提示:
Failed to load image http://qcloudtest-XXXXXX.cosundefined.myqcloud.com/1511574499754-BJh1nrLeM.jpg
net::ERR_NAME_NOT_RESOLVED
qcloudtest-XXXXXX.cosundefined
.myqcloud.com, undefined, 什么鬼,為什么會出現這個玩意?
從連接字樣上看是上傳到騰訊的cos服務器上了. - 打開騰訊后台進入cos服務器
https://console.qcloud.com/cos4/bucket
有剛才上傳的文件. bucket是qcloudtest, 文件名是:1511574499754-BJh1nrLeM.jpg - 問題出在哪里了?
打開cos上的文件信息
看見鬼了沒有.
小程序控制台打印出的是:
qcloudtest-XXXXXX.cosundefined
.myqcloud.com
而cos上的是
qcloudtest-XXXX.cosgz
.myqcloud.com
好好的一個標准初始化小程序,竟然鬧這樣. - 繼續,看看服務器配置文件
打開服務器配置文件 /server/config.js 騰訊雲的對象服務器cos配置是這樣的.
哦? 默認cn-south華南, bucket是qcloudtest, 繼續打開See,看看里面的說明把.
https://cloud.tencent.com/document/product/436/6224
終於在適用於 JSON API
中找了說明.
undefined
為地域簡稱,gz是廣州(華南)的檢測.
cos控制台確定qcloudtest是在廣州.
話又說回來了, 那cn-south
又是什么呢? https://cloud.tencent.com/document/product/436/6224 文檔中未做說明. - 既然是上傳的問題,那就順着上傳的路,繼續網上找.
上傳接口在: /server/controllers/uploads.js
里面有引用了: /server/qcloud.js
里面初始化了:/server/config.js, 還引用了wafer-node-sdk
翻翻wafer-node-sdk看看.
打開: /server/node_modules/wafer-node-sdk(在sublime或者其他工具中打開)
找到上傳相關的js: /server/node_modules/wafer-node-sdk/lib/upload/index.js
在wafer-node-sdk包中圖片返回imgUrl:
http://config.cos.fileBucket−{config.qcloudAppId}.cosregionMap[config.cos.region].myqcloud.com/{imgKey},
是根據regionMap
中的地址獲取的, 而cn-south
並不在regionMap
中. - 修改/server/config.js
將cos的region改為與cos服務器的地址相對應的得與的regionMap
的key.
重新上傳測試代碼(騰訊雲->上傳測試代碼)
測試上傳圖片. 我能說又出現新的問題了嗎!!!!!!! (在….瘋….中… 凌亂)
- 繼續, 解決403問題.
復制圖片鏈接到chrome中,並打開開發者模式
發現返回json錯誤,並且報403錯誤. 是無權限訪問cos服務器. json提示需要簽名. 這個通常是服務器配置的問題.
返回騰訊雲cos控制台, 看到在基礎配置中的訪問權限是"私有讀寫",將其改為"公有讀私有寫"
- 打開小程序,上傳圖片. OK
如果能@騰訊的話. 我希望,騰訊的兄弟們, 技術是嚴謹的. 請珍重. B被A打下去了,難道T也要被打嗎?
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">