收藏
回答

获取不限制的小程序码,获取后扫码进入小程序页面获取不到传入的参数?,求大佬指点,困扰我好几天了!

//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
求大佬指点!


    
回答关注问题邀请回答
收藏

1 个回答

  • dreamhunter
    dreamhunter
    08-01

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

    08-01
    有用
    回复 1
    • 马拉涛
      马拉涛
      08-01
      感谢,使用二维码编译进入发现是二维码没参数传进去
      08-01
      回复
登录 后发表内容