问题一:
Failed to load image http://qcloudtest-XXXXXX.cosundefined.myqcloud.com/1511574499754-BJh1nrLeM.jpg
net::ERR_NAME_NOT_RESOLVED
问题二: 403问题
小程序开发之:Wafer2 快速开发 Demo详解
第一步, 通过小程序的微信公众平台启用腾讯云开发
网址:https://cloud.tencent.com/document/product/619/11447
第二步 下载Demo到本地
从github上下载demo代码到本地目录项目地址:
https://github.com/tencentyun/wafer2-quickstart-nodejs
代码已经fork到我的github上.如果以上链接不是代码可以直接使用:
https://github.com/MrParty/wafer2-quickstart-nodejs
git clone https://github.com/tencentyun/wafer2-quickstart-nodejs.git
进入git目录执行(本地需要有node环境.未安装的请百度)
# 切换到 server 文件夹
cd server
# 安装依赖
npm install
打开小程序开发工具
下载地址
第三步, 修改配置参数(完成第一步操作)
1、打开/server/config.js, 修改数据库密码为小程序的appid.
2、点击右上角的上传腾讯云查看腾讯云状态.
3、选择复制开发环境request域名.
4、打开/client/config.js 修改主机名.
5、至此小程序基于腾讯云的开发部署完成…. 然….
6、点击登录, 成功!
7、点击上传图片??? ,图片哪里去了.出问题了 好,这个后面再说。
8、打开信道/发送消息,成功
图片问题分析
1、打开小程序的控制台 console. 发现一有一个错误提示:
[Failed to load image](https://link.jianshu.com/?t=https://images2018.cnblogs.com/blog/838361/201711/838361-20171125124159968-571510832.png)
[http://qcloudtest-XXXXXX.cosundefined.myqcloud.com/1511574499754-BJh1nrLeM.jpg](https://link.jianshu.com/?t=http://qcloudtest-xxxxxx.cosundefined.myqcloud.com/1511574499754-BJh1nrLeM.jpg)
net::ERR_NAME_NOT_RESOLVED
qcloudtest-XXXXXX.cos`undefined`.myqcloud.com, undefined, 什么鬼,为什么会出现这个玩意?
从连接字样上看是上传到腾讯的cos服务器上了.
- 打开腾讯后台进入cos服务器登录地址
有刚才上传的文件. 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}.cos
regionMap[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
感谢您的阅读! 可能有错误欢迎指正交流!