是否曾使用过腾讯云Serverless
是
我要点赞
- demo1的控制台操作简单,按照流程来很顺利就能完成部署并访问。
- 腾讯云的客服服务很好,有问题可以随时在线交流。
- 可以将对话转成一个工单,工单有专门的工程师对接负责。
我要吐槽
体验过程中的不顺畅、有 bug 等,欢迎吐槽
Demo1 - 趣味游戏三步上云
点击去体验,进入如下页面。
这是一个合成大西瓜的游戏demo,语言是Python3.6版本,可以通过这个模板,快速部署上线这个游戏。
参数选择默认的就好,点击完成。
问题:缺少项目地址访问引导
部署完成后,进入函数管理的页面,却不知道下一步怎么操作。
后来才发现,点击触发管理,可以看到模板创建好的触发器,API网关触发中,可以看到访问路径。
这里需要优化下,如果是新手,可能不知道。
问题:缺少只支持移动端的提示
这个游戏目前只支持移动端,而sls部署是在电脑完成的,打开demo后,应该给出提示才对,提示内容是该页面只能在手机上访问,PC浏览器贴一个二维码,而不是显示成下面这样。
发现一个小细节,点击游戏里面的元素,ctrl shift i打开审查元素的快捷键是失效的。
必须点击白色的部分才可以。
问题:图片加载失败的bug,这个是logo
链接地址是:https://service-0hp61skm-1251131656.hk.apigw.tencentcs.com/release/images/logo.png
问题:加载字体过小,没有做rem适配。
问题:转盘错位
问题:刮奖样式错乱。
表单错乱
Demo2 - Serverless相册
demo2的问题就比较多了,我零零散散花费了2-3天的时间,才完整的部署成功。在腾讯云技术团队的帮助下,我成功完成了本地和线上部署。
本地开发
官方文档如下:
photo-album/README.md · alfredhuang/sls-day - Gitee.com
但本地开发文档写的过于简单,甚至缺少一些前置准备和关键步骤细节。我这里补充一下完整可用的版本。
前置准备:
- 安装Nodejs(官网下载)
- 安装Docker(官网下载)
- 安装Serverless(npm或yarn全局安装)
完整命令:
代码语言:javascript复制$ git clone https://github.com/serverless-plus/photo-album.git
代码语言:javascript复制$ npm install && cd client && npm install
代码语言:javascript复制$ npm run docker:up
代码语言:javascript复制$ cp .env.example .env
上面复制文件内容并创建.env后,把TENCENT_APP_ID、TENCENT_SECRET_ID、TENCENT_SECRET_KEY填写进去。这三个参数需要在腾讯云控制台的【访问管理-访问密钥-API密钥管理】中寻找。
访问密钥 - 控制台
到这里很多人会接着启动本地服务器和本地客户端,但在启动服务器的时候,我遇到了以下报错:
报错node env
我在这里卡了很久,解决办法是,修改package.json
的文件中,scripts
里面的dev:server
这一行,加上前缀cross-env
。改完后如下:
"dev:server": "cross-env NODE_ENV=development ts-node src/server.ts",
在这里我是反复踩了很多坑,期间还联系了官方技术支持,根据我俩的共同排查,发现解决这个报错,还需要做以下几件事:
1.windows系统下不能加MYSQL_DATABASE: root这一行配置;
2.package.json中这里需要执行如下安装并修改。
代码语言:javascript复制npm install -g ts-node
npm install -g typescript
npm install -g cross-env
3.env中的存储桶配置指定的存储桶需要预先在对象存储cos中创建好;
4.需要在对象存储中根据本地地址设置跨域;
我是创建了名字为photo-album的cos存储桶,选择上海地域,可用区不用管,没有意义。(选择不同地域效果可能会不一样)
5.docker-compose.yml
这个文件中,去掉MYSQL_USER
那一行,否则docker启动mysql会一直处于红色失败的状态。
6..env
文件关于mysql数据库的地方也要修改,参考模板如下:
# 以下为通用配置
REGION=ap-shanghai
ZONE=ap-shanghai-1
BUCKET=photo-album
# 以下为本地开发的数据库配置
DB_HOST=127.0.0.1
DB_NAME=photo-album
DB_USER=root
DB_PASSWORD=123456
DB_PORT=3306
7.完成了上述修改,执行npm run dev:server
,还是会出现报错errno
。
解决这个问题,就需要进入docker容器。
我这里是用的docker的Windows客户端,进入图形界面,点击CLI按钮即可进入命令行模式。
接着要切换到mysql用户,键入下面命令:
代码语言:javascript复制mysql -u root -p
用户的密码在docker-compose.yml
文件中,我这里用的是root。
如果出现报错:ERROR 1045 (28000): Access denied for user 'root'@'127.0.0.1' (using password: YES)
可以修改密码为123456,参考下面这篇文章。
ERROR 1045 (28000): Access denied for user ‘root‘@‘172.17.0.1‘ (using password: YES)_ JustPlay1994的专栏-CSDN博客
代码语言:javascript复制rem ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; #改密码
也可以尝试直接输入123456,我这边是在配置修改过了,先docker:down关闭,再重新启动docker:up才登录成功。
当出现下面提示,证明本地服务端启动成功。
接着再启动本地客户端。
访问网址,即可看到成功部署的本地相册应用。
线上部署
线上部署就简单多了,按照文档的步骤来就好,但还是有点小坑需要注意一下。
问题:db部署报错
这个问题,在执行命令npm run deploy:db
会出现。
给了提示也很明显,说明只有上海2的可用区是可以用的,上海1不在支持列表中,所以我这里需要在配置里面换可用区。这也是我前面提到的可能需要换可用区的原因。
我的解决办法是,换了.env可用区为 ap-shanghai-2就好了。
我要建议
目前这两个demo我都已经顺利部署完成,只是觉得demo1的例子不够完善,部署发布到线上有很多bug,希望能够有一个正常H5的demo可以跑。再就是demo2的文档写的过于简单,以至于很多同学包括我自己,在一些配置细节坑上卡了很长时间。如果下次有类似活动,最好能够提供一个视频教学,这样参与起来会更加轻松一些。