Tencent Serverless在VSCode中开发

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

出租屋里都用的什么网,还能在线写代码,电脑上装的VSCode不香了吗?在掘金上一篇自动签到(云函数版)让我出入云开发(小程序的云函数也写过),在没必要承担服务器的高昂成本的前提下,有免费的当然要用,做个定义任务真香。不过在体验了云函数在线开发后感觉还是太麻烦,没有本地装的VSCode好用,在云函数的官方文档找到了VSCode上可以装的插件和使用指南,来一起了解一下。

VSCode和腾讯云账号请提前安排

Tencent Serverless插件

安装插件:

微信图片_20210927103726

配置信息:

  1. 设置APPID:账号信息地址
  2. 设置SecretId 和 SecretKey:API密钥管理地址:
  3. 设置地域:先随便选一个吧,都是薅的免费部分。

微信图片_20210927103732

编写函数

功能介绍:

  1. 云函数功能:
    1. 下载云函数到本地:将云函数拉到本地方便修改,查看。
    2. 云端调试:在VSCode进行云端调试会将日志输出拉到VSCode终端进行展示。
  2. 本地函数:
    1. 创建函数:按指定模板创建云函数。
    2. 上传云端:将编写好的云函数上传值云端。

编写函数注意:

  1. 在函数目录下的src进行npm初始化,上传云端后目录完整不缺失。
  2. 注意node_modules过大的问题,还是建议云端IDE的终端执行安装。
  3. 编写后上传云端即可进行调试,如果找不到指定的模块建议在云端IDE查看目录结构是否完整。

贴代码:

  1. 原文章地址:一百行代码实现!云函数版掘金自动签到&抽奖&邮件提醒~

微信截图_20210927104926

  1. 配置文件
exports.config = {
cookie: "",
email: {
user: "",
from: "",
to: "",
pass: ""
}
}
  1. 业务部分
'use strict';
/*---------------依赖-----------------*/
const nodeMailer = require('nodemailer');
const axios = require('axios');
const conf = require('./config')
/*---------------配置-----------------*/
const config = {
"baseUrl": "https://api.juejin.cn",
"apiUrl": {
"getTodayStatus": "/growth_api/v1/get_today_status",
"checkIn": "/growth_api/v1/check_in",
"getLotteryConfig": "/growth_api/v1/lottery_config/get",
"drawLottery": "/growth_api/v1/lottery/draw"
},
"cookie": conf.config.cookie,
"email": {
"qq": {
"user": conf.config.email.user,
"from": conf.config.email.from,
"to": conf.config.email.to,
"pass": conf.config.email.pass,
}
}
}
/*---------------掘金-----------------*/
// 签到
const checkIn = async () => {
let { error, isCheck } = await getTodayCheckStatus();
if (error) return console.log('查询签到失败');
if (isCheck) return console.log('今日已参与签到');
const { cookie, baseUrl, apiUrl } = config;
let { data } = await axios({ url: baseUrl + apiUrl.checkIn, method: 'post', headers: { Cookie: cookie } });
if (data.err_no) {
console.log('签到失败');
await sendEmailFromQQ('今日掘金签到:失败', JSON.stringify(data));
} else {
console.log(`签到成功!当前积分:${data.data.sum_point}`);
await sendEmailFromQQ('今日掘金签到:成功', JSON.stringify(data));
}
}
// 查询今日是否已经签到
const getTodayCheckStatus = async () => {
const { cookie, baseUrl, apiUrl } = config;
let { data } = await axios({ url: baseUrl + apiUrl.getTodayStatus, method: 'get', headers: { Cookie: cookie } });
if (data.err_no) {
await sendEmailFromQQ('今日掘金签到查询:失败', JSON.stringify(data));
}
return { error: data.err_no !== 0, isCheck: data.data }
}
// 抽奖
const draw = async () => {
let { error, isDraw } = await getTodayDrawStatus();
if (error) return console.log('查询抽奖次数失败');
if (isDraw) return console.log('今日已无免费抽奖次数');
const { cookie, baseUrl, apiUrl } = config;
let { data } = await axios({ url: baseUrl + apiUrl.drawLottery, method: 'post', headers: { Cookie: cookie } });
if (data.err_no) return console.log('免费抽奖失败');
console.log(`恭喜抽到:${data.data.lottery_name}`);
}
// 获取今天免费抽奖的次数
const getTodayDrawStatus = async () => {
const { cookie, baseUrl, apiUrl } = config;
let { data } = await axios({ url: baseUrl + apiUrl.getLotteryConfig, method: 'get', headers: { Cookie: cookie } });
if (data.err_no) {
return { error: true, isDraw: false }
} else {
return { error: false, isDraw: data.data.free_count === 0 }
}
}
/*---------------邮件-----------------*/
// 通过qq邮箱发送
const sendEmailFromQQ = async (subject, html) => {
let cfg = config.email.qq;
if (!cfg || !cfg.user || !cfg.pass) return;
const transporter = nodeMailer.createTransport({ service: 'qq', auth: { user: cfg.user, pass: cfg.pass } });
transporter.sendMail({
from: cfg.from,
to: cfg.to,
subject: subject,
html: html
}, (err) => {
if (err) return console.log(`发送邮件失败:${err}`, true);
console.log('发送邮件成功')
})
}
exports.main_handler = async (event, context, callback) => {
console.log('开始');
await checkIn();
await draw();
console.log('结束');
};

部署函数

  1. 在本地函数窗口执行上传云端操作。
  2. 在云端函数窗口执行云端调试操作,并观察终端信息。(使用定时器方式触发)
  3. 测试成功后就可以配置触发器来定时执行云函数了。

配置触发器:

  1. 云函数控制台查看我们的云函数。
  2. 微信截图_20210927110127
  3. 提交后回到函数管理确认重新部署。
  4. 顺便在代码编辑的下方再次做一次测试。

微信截图_20210927110258


我是小鑫同学:

  • 😇熟悉:安卓开发,前端开发。
  • 🤪了解:后端开发,脚本开发。
  • 🧐特长:解决编码中的疑难杂症。
  • 😇座右铭:积跬步以至千里,积小流以成江海。
posted @   前端小鑫同学  阅读(15)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示