codegeex生成小程序代码常因异步嵌套错误、this指向丢失、url未编码、使用废弃api等问题导致运行失败;需在提示词中明确约束执行上下文、参数传递方式及基础库版本,并人工校验关键结构。

CodeGeeX 生成微信小程序 onShow 逻辑时,为什么 wx.login 后没触发 wx.request?
因为 CodeGeeX 默认生成的代码常把 wx.request 放在 wx.login 的 success 回调外层,导致异步链断裂。它容易按“先 login、再 request”的线性思维写,但实际必须嵌套在 success 回调里,否则 code 拿不到。
实操建议:
- 输入指令时明确写“在
wx.login成功回调内调用wx.request,传入code参数” - 生成后立刻检查是否出现
success(res) { ... wx.request(...) }结构,而不是两个并列调用 - 若看到
const code = res.code却没被wx.request使用,说明嵌套层级错了,需手动拖进回调内部 - 注意基础库版本:微信 2.28.0+ 已移除
code自动透传,必须显式取值并传参
用 CodeGeeX 写 setData 时,this.setData 报错 “not a function” 怎么办?
常见于生成代码直接写 this.setData,但实际上下文不是 Page 实例(比如写在普通函数或 setTimeout 里),this 指向丢失。
实操建议:
- 确保光标落在
Page({})对象内部再按Ctrl+I,否则 AI 无法识别当前作用域 - 生成后检查函数是否定义在
Page的 methods 或生命周期钩子中(如onShow),而不是独立函数块 - 避免指令中说“写一个工具函数”,应说“在
onShow中调用this.setData更新userInfo.openid” - 若仍出错,临时加个绑定:用
const self = this提前缓存,后续用self.setData
CodeGeeX 生成的 navigateToDetail 跳转逻辑,为什么真机不跳?
它常生成 wx.navigateTo({ url: '/pages/detail/detail?id=' + id }),但没做 encodeURIComponent,遇到中文或特殊字符时 URL 解析失败,开发工具可能容忍,真机直接静默失败。
实操建议:
- 指令中必须包含“对
id参数使用encodeURIComponent编码后再拼接 URL” - 生成后逐行核对:有没有
encodeURIComponent(id)?有没有漏掉括号或引号? - 不要依赖 AI 补全 URL 构造逻辑——这是高频遗漏点,必须人工补上
- 测试时用含空格或中文的 mock id(如
"订单 #A-测试")验证跳转是否生效
如何让 CodeGeeX 输出的代码不带废弃 API?
AI 训练数据混杂旧文档,会默认输出 wx.getUserInfo 或 open-type="getUserInfo" 这类 2021 年起已下线的写法,编译不报错但运行时报 permission denied。
实操建议:
- 所有指令末尾强制加上“适配微信基础库 2.28.0+,禁用
wx.getUserInfo、open-type等废弃能力” - 生成后全局搜索
getUserInfo、scope.userLocation、button open-type,一处都不能留 - 替代方案要写清楚:例如“改用
uni.getUserProfile(uni-app)或通过getPhoneNumber组件获取手机号” - 如果插件状态栏没显示“Ready”,Ctrl+I 根本不会触发——这比提示词错误更隐蔽,先看右下角图标
this 指向错、废弃 API 漏删。AI 只负责写,不负责运行环境约束——那部分得你盯紧。











