//qrcodetest.js 这是获取微信小程序的代码片段
const axios = require('axios');
const fs = require('fs');
const path = require('path');
// 配置你的小程序信息
const APPID = 'xxx';
const APPSECRET = 'xxx';
// 配置生成参数
const config = {
scene: 'qrcode=369', // 要携带的参数
page: 'pages/patrol/qrScanCodeDetail/index', // 跳转的页面路径
filename: `code-${Date.now()}.png` // 保存的文件名
};
// 创建保存目录
const saveDir = './miniprogram_codes';
if (!fs.existsSync(saveDir)) {
fs.mkdirSync(saveDir);
}
// 获取access_token
async function getAccessToken() {
try {
const response = await axios.get('https://api.weixin.qq.com/cgi-bin/token', {
params: {
grant_type: 'client_credential',
appid: APPID,
secret: APPSECRET
}
});
return response.data.access_token;
} catch (error) {
console.error('获取access_token失败:', error.response?.data || error.message);
process.exit(1);
}
}
// 生成小程序码并保存
async function generateMiniProgramCode() {
try {
const accessToken = await getAccessToken();
const response = await axios.post(
`https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=${accessToken}`,
{
scene: config.scene,
page: config.page,
width: 430,
auto_color: false,
line_color: { r: 0, g: 0, b: 0 },
is_hyaline: false
},
{ responseType: 'arraybuffer' }
);
// 保存图片到本地
const savePath = path.join(saveDir, config.filename);
fs.writeFileSync(savePath, response.data);
console.log(`小程序码已生成并保存至: ${savePath}`);
} catch (error) {
console.error('生成小程序码失败:', error.response?.data ?
JSON.parse(Buffer.from(error.response.data).toString()) :
error.message);
}
}
// 执行生成
generateMiniProgramCode();
//app.tsx获取参数的页面
import Taro from '@tarojs/taro';
import { setNavBarHeight } from '@components/NavBar.component';
import { PropsWithChildren } from 'react';
import 'taro-ui/dist/style/index.scss';
import './app.scss';
export default (props: PropsWithChildren) => {
Taro.useLaunch((option) => {
console.log(option, 'option');
const decodedScene = decodeURIComponent(option.query.qrcode);
console.log(decodedScene, 'decodedScene');
Taro.setStorage({
key: 'decodedScene',
data: decodedScene,
});
const menuRect = Taro.getMenuButtonBoundingClientRect();
setNavBarHeight(menuRect.top + menuRect.height + 8);
});
return props.children;
};
使用的Taro框架,在微信开发者工具使用编译模式进入指定页面,且携带参数时可以正常接收参数, 但是我发布上线后扫描生成好的小程序码时可以进入指定页面,但是接收不了传入的参数,打印出来为undefined, 除了在这个app.tsx页面尝试获取传入的值之外,还在要调用的页面也试过在Taro.uesonload里面获取过, 开发者工具编译模式进入页面
扫码进入后报错,拿不到参数
在微信开发者工具使用编译模式进入此页面时,通过uesonload的参数是可以获取到值的,但是扫码进入还是一样为undefined
求大佬指点!

开发工具可以直接二维码编译,你直接用工具看你生成的小程序码就行了。先确定码没有问题