ServelessDay 2021用户反馈

2021-05-26 10:02:05 浏览数 (3)

是否曾使用过腾讯云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。改完后如下:

代码语言:javascript复制
"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数据库的地方也要修改,参考模板如下:

代码语言:javascript复制
# 以下为通用配置
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的文档写的过于简单,以至于很多同学包括我自己,在一些配置细节坑上卡了很长时间。如果下次有类似活动,最好能够提供一个视频教学,这样参与起来会更加轻松一些。

0 人点赞