前言:这个东西坑死我了 业务需求要生成小程序码 然后我找了两天的资料 运行 生成一堆的乱码 死活就是不能生成 最后看了一遍博客 套用了一下 自己又简单的改了一下  nodejs 我是刚刚接触  有很多都是不明白 request-promise  开始我用这个框架获得“access_token

” 然后我就想 这个可以发送请求  那生成小程序码是不是也可以用这个  答案是错误的  里面少了一个设置responseType: 'arraybuffer'  也许里面有 但是我不知道  最后 我请求access_token 的时候用的是request-promise 这个框架  但是生成小程序码的时候用的axios这个  行了不说了  直接上代码
第一步先导入框架  如果自己没有用到可以不用
npm install --save request  // request框架
npm install --save request-promise // request框架promise风格
npm install --save axios // 数据请求框架,可将返回的数据类型设置为流`stream`
# 备注:install 可以简写为 i ;save 作用是将这个库添加到package.json里
然后就是生成小程序码了   下面的代码 直接可以复制粘贴 直接可以用
const cloud = require('wx-server-sdk')
const axios = require('axios')
var rp = require('request-promise');
const fs = require('fs');
var stream = require('stream');
cloud.init() // 云函数入口函数
exports.main = async (event, context) => {
console.log(event)
try {
const resultValue = await rp('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + event.userInfo.appId + '&secret=' + event.appSectet)
const token = JSON.parse(resultValue).access_token;
console.log('------ TOKEN:', token); //const response = await axios({
return await axios({
method: 'post',
url: 'https://api.weixin.qq.com/wxa/getwxacode',
//responseType: 'stream',
responseType: 'arraybuffer',
params: {
access_token: token,
},
data: {
//access_token: token,
path: "pages/index/index",
width: 300,
//scene: "id=12"
},
}).then(function (response){
return response.data;
})
} catch (err) {
console.log('>>>>>> ERROR:', err)
}
}

再生成完小程序码数据后

在调用函数里需要转base64格式 然后图片就生成了

wx.cloud.callFunction({
name: 'getImage',
data: {
appSectet: app.globalData.appSectet
}
}).then(res => { var imgUrl = wx.arrayBufferToBase64(res.result); //res.result
imgUrl = ("data:image/png;base64," + imgUrl);
console.log(imgUrl)
thisData.setData({
captchaImage1: imgUrl
}) })

如果你不想转base64 的话  可以直接上传到七牛  然后拿到路径

那就直接在云函数里 加代码就可以  上传的到七牛 用流的形式上传到七牛

**********注意 是在云函数加代码呀    在上面的云函数代码里  就不能直接返回了  把.then后面的东西注释掉  把这个response 变量打开   然后要引入七牛的框架


const qiniu = require('qiniu')  //引入的七牛
 
 
var options = {
scope: "你的空间",
};
var accessKey = "你的accessKey ";
var secretKey = "你的secretKey ";
var mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
var options = {
scope: "bwt-portrait",
};
var putPolicy = new qiniu.rs.PutPolicy(options);
var uploadToken = putPolicy.uploadToken(mac);
console.log(uploadToken, "--------------")
var config = new qiniu.conf.Config();
// 空间对应的机房
config.zone = qiniu.zone.Zone_z0 var key = 'image10.png';
return await new Promise(res => {
var formUploader = new qiniu.form_up.FormUploader(config);
var putExtra = new qiniu.form_up.PutExtra();
var readableStream = response.data;
formUploader.put(uploadToken, key, readableStream, putExtra, function (respErr,
respBody, respInfo) {
console.log("代码走了");
if (respErr) {
throw respErr;
}
if (respInfo.statusCode == 200) {
console.log(respBody);
res(respBody)
} else {
console.log(respInfo.statusCode);
console.log(respBody);
res(respInfo.statusCode)
}
});
})

大体就是这样 业务需求的不同 实现的也是不同的  可以自行更改

最后我把我看的博客地址连上

https://blog.csdn.net/feng2qing/article/details/82914505?utm_source=blogxgwz5

nodejs + 小程序云函数 生成小程序码的更多相关文章

  1. 如何使用微信小程序云函数发送短信验证码

    其实微信小程序前端和云端都是可以调用短信平台接口发送短信的,使用云端云函数的好处是无需配置域名,也没有个数限制. 本文使用的是榛子云短信平台(http://smsow.zhenzikj.com) ,S ...

  2. 微信小程序云函数 添加数据到数据库

    1.新建小程序,建立云开发快速启动模板 这里和普通小程序的区别有三点 一是 project.config.json写上云函数所在目录"cloudfunctionRoot": &qu ...

  3. 【Serverless】云函数微信小程序

    简介 什么是AppGallery Connect云函数 云函数是一项Serverless计算服务,提供FaaS(Function as a Service)能力,可以帮助开发者大幅简化应用开发与运维相 ...

  4. 微信小程序云函数Windows下安装wx-server-sdk

    第一次上传部署云函数时,会提示这个,建议在这之前先安装一下node.js. https://nodejs.org/en/ 下载nodejs,然后直接安装,在cmd控制台输入node -v和npm -v ...

  5. 小程序云函数,解决接口https问题

    本实例只是简单记录http请求 1,云函数如下 // 云函数入口函数 exports.main = async (event, context) => { let req = await got ...

  6. Http API触发小程序云函数案例

    1.创建云函数 在云开发中创建云函数(sum,调用需要两个参数:a.b): 2.invokeCloudFunction触发云函数 const request = require('request'); ...

  7. 微信小程序云函数中有以下未安装的依赖,如果未安装即全量上传

    云函数中有以下未安装的依赖,如果未安装即全量上传 在新建的云函数,右击终端打开->cmd,安装依赖 npm install --production 依赖安装成功之后,文件里面会出现 packa ...

  8. 微信小程序-云函数、云存储

    云函数是运行在服务器端的 创建一个目录cloud project.config.json配置云函数目录 cloud目录有个云朵.代表云函数 初始化成功了 新建一个云函数 cloud目录右击 新建一个N ...

  9. 微信小程序云开发之云函数创建

    云函数 云函数是一段运行在云端的代码,无需管理服务器,在开发工具内编写.一键上传部署即可运行后端代码. 小程序内提供了专门用于云函数调用的 API.开发者可以在云函数内使用 wx-server-sdk ...

随机推荐

  1. 剑指offer——二叉树的镜像

    题目:操作给定的二叉树,将其变换为源二叉树的镜像. 思路:前序(根左右的顺序)遍历一棵树,在存储的时候将其左右树进行交换,最后按照处理后的树还原,即得到其镜像. /** public class Tr ...

  2. 宝塔搭建laravel所需要的lnmp环境linux-nginx-mysql-php-composer-git

    这里示例是使用 CentOS 7.4 哈:如果还没有服务器建议购买阿里云的或者是腾讯云的:这台服务器需要是未安装过 php 的环境:如果服务器已经被折腾过一番:建议备份下数据后重装下环境:阿里云和腾讯 ...

  3. LocalDate的使用

    LocalDate的一些使用方法 今天半天的时间都用在了LocalDate上,然后呢,也是自己的第一次写博客. 首先来看看会用上的方法吧. 两个构造器,用的是静态工厂方法 static   Local ...

  4. 解决SpringMVC拦截器中Request数据只能读取一次的问题

    解决SpringMVC拦截器中Request数据只能读取一次的问题 开发项目中,经常会直接在request中取数据,如Json数据,也经常用到@RequestBody注解,也可以直接通过request ...

  5. step_by_step_Angularjs-UI-Grid使用简介

    了解 Angularjs UI-Grid 起因:项目需要一个可以固定列和表头的表格,因为表格要显示很多列,当水平滚动条拉至后边时可能无法看到前边的某些信息. 以前在angularjs 1.x 中一直都 ...

  6. innodb_flush_log_at_trx_commit与sync_binlog理解

    innodb_flush_log_at_trx_commit该参数控制重做日志写入磁盘的过程.我们知道 InnoDB 使用“Write Ahead Log”策略来避免数据丢失问题,即依靠重做日志来保证 ...

  7. 平板电脑与火狐浏览器下载excel中文文件名乱码

    fileName = new String(fileName.getBytes("utf-8"), "iso8859-1");//兼容火狐.ie.平板 resp ...

  8. spring-boot的Hello World案例,最简单的spring-boot项目

    Spring Boot HelloWorld 一个功能: 浏览器发送hello请求,服务器接收请求并处理,响应Hello World字符串. 1.创建一个maven项目 2.导入依赖spring-bo ...

  9. git安装包解压后没有configure

    今天在linux上安装git客户端,解压了tar包后,发现没有configure,无法安装.经查,原来是要先执行autoconf命令,执行后出现configure

  10. 杨其菊/常惠琢《面向对象程序设计(java)》第十一周学习总结

    <面向对象程序设计>第十一周学习总结 第一部分:理论知识 JAVA的集合框架 JAVA的集合框架实现对各种数据结构的封装,以降低对数据管理与处理的难度. 所谓框架就是一个类库的集合,框 ...