小程序基於疼訊qcloud的nodejs開發服務器部署


 

騰訊,疼訊,很疼.
請慎重看騰訊給出的文檔,最好做一個筆記.
我只能說我能力有限,在騰訊雲小程序的文檔中跳了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 修改主機名.

至此小程序基於騰訊雲的開發部署完成…. 然….

點擊登錄, 成功!
點擊上傳圖片??? ,圖片哪里去了. 后議. 什么, 你提示上傳成功沒有顯示出來, 不好意思我也沒有. 你要理解馬哥.
打開信道/發送消息,成功.

不該有的第四步 圖片上傳成功打開失敗的詭異之舉.

當然,代碼是沒有詭異的.

分析原因

  1. 分析一下, 打開小程序的控制台 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服務器上了.
  2. 打開騰訊后台進入cos服務器
    https://console.qcloud.com/cos4/bucket


    有剛才上傳的文件. bucket是qcloudtest, 文件名是:1511574499754-BJh1nrLeM.jpg
  3. 問題出在哪里了?
    打開cos上的文件信息

    看見鬼了沒有.
    小程序控制台打印出的是:
    qcloudtest-XXXXXX.cosundefined.myqcloud.com
    而cos上的是
    qcloudtest-XXXX.cosgz.myqcloud.com
    好好的一個標准初始化小程序,竟然鬧這樣.
  4. 繼續,看看服務器配置文件
    打開服務器配置文件 /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 文檔中未做說明.
  5. 既然是上傳的問題,那就順着上傳的路,繼續網上找.
    上傳接口在: /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中.
  6. 修改/server/config.js
    將cos的region改為與cos服務器的地址相對應的得與的regionMap的key.

    重新上傳測試代碼(騰訊雲->上傳測試代碼)
    測試上傳圖片. 我能說又出現新的問題了嗎!!!!!!! (在….瘋….中… 凌亂)
  7. 繼續, 解決403問題.
    復制圖片鏈接到chrome中,並打開開發者模式

    發現返回json錯誤,並且報403錯誤. 是無權限訪問cos服務器. json提示需要簽名. 這個通常是服務器配置的問題.
    返回騰訊雲cos控制台, 看到在基礎配置中的訪問權限是"私有讀寫",將其改為"公有讀私有寫"
  8. 打開小程序,上傳圖片. OK


如果能@騰訊的話. 我希望,騰訊的兄弟們, 技術是嚴謹的. 請珍重. B被A打下去了,難道T也要被打嗎?

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM