# payment-mini ## 项目简介 `payment-mini` 是一个基于 Taro React 的支付宝小程序项目,主要用于企业扫码支付管理平台。项目使用 TypeScript、React、Zustand 状态管理,并遵循 Taro 小程序开发规范。 ## 主要特性 - 支持支付宝小程序编译 - 使用 Taro 4.x React 版本 - 使用 Zustand 管理本地状态 - 已配置 ESLint、Stylelint 和 Prettier - 已配置 Husky + lint-staged + commitlint,支持语义化提交规范 ## 环境要求 - Node.js 16+ 或 18+ - npm ## 安装依赖 ```bash npm install ``` ## 本地开发 ```bash npm run dev:alipay ``` ## 构建发布 ```bash npm run build:alipay ``` ## 代码风格与检查 - ESLint:`npm run lint` - Prettier:`npm run format` - Stylelint:项目已配置 `stylelint.config.mjs` ## Git 提交规范 项目采用 `commitlint` 进行提交信息校验,遵循 Conventional Commits 规范,例如: ```bash git commit -m "feat(login): add agree dialog before login" ``` 常用类型包括: - `feat`:新功能 - `fix`:修复 bug - `docs`:文档变更 - `style`:代码格式或风格调整 - `refactor`:重构 - `test`:测试相关 - `chore`:构建/工具/依赖等杂项 ## 项目目录 ```text src/ app.ts app.less pages/ login/ index/ mine/ components/ schemas/ stores/ config/ index.ts .babelrc .eslintrc .stylelint.config.mjs .prettierrc .commitlint.config.mjs .husky/ ``` ## 其他说明 - 若使用支付宝小程序编译失败,请先清理 `dist` 目录和 `.taro` 缓存后重试。 - 当前已移除 `zod`,改为本地校验逻辑,避免支付宝小程序运行时兼容性问题。 ## FAQ **Q: 支付宝小程序编译出错:TypeError: Constructor Map requires 'new'?** **A:** 把 `dist/taro.js` 中的 `EventSource` ES6写法: ```js class EventSource extends Map { removeNode(child) { const { sid, uid } = child; this.delete(sid); if (uid !== sid && uid) this.delete(uid); } removeNodeTree(child) { this.removeNode(child); const { childNodes } = child; childNodes.forEach(node => this.removeNodeTree(node)); } } ``` 替换成 ```js class EventSource { data = {}; get(id) { return this.data[id]; } set(id, value) { this.data[id] = value; } delete(id) { delete this.data[id]; } has(id) { return id in this.data; } removeNode(child) { const { sid, uid } = child; this.delete(sid); if (uid !== sid && uid) this.delete(uid); } removeNodeTree(child) { this.removeNode(child); const { childNodes } = child; childNodes.forEach((node) => this.removeNodeTree(node)); } } ```