vibe coding可快速构建内部数据工具,需先配置.project-rules.md规范技术栈与目录结构,再通过cursor按规则生成express服务代码,并手动补全multer文件大小限制,最后添加预校验中间件、字段白名单及jest单元测试保障健壮性。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

用Vibe Coding快速构建可交付的内部工具
当你需要在4小时内交付一个支持Excel导入、字段映射、自动去重并导出清洗后CSV的部门级数据处理工具,又不想手写路由、解析逻辑和前端交互时,Vibe Coding就是最直接的解法——但前提是工程基线已就位,否则AI生成的代码连本地启动都会报错。
第一步:在空文件夹中创建 .project-rules.md 文件,粘贴以下内容(必须严格使用此格式,AI会逐行读取校验):
```markdown
# 项目全局开发规范
技术栈: Node.js 20 + Express 4.18 + multer + xlsx + csv-writer
目录规则: /src/routes /src/utils /src/middleware /public/uploads /public/exports
响应格式: { code: 200, data: {}, msg: "" }
错误码规则: 400→参数缺失,500→解析失败,413→文件超限(10MB)
禁止功能: 不得连接数据库、不得调用外部API、不得生成HTML页面
```
第二步:打开 Cursor → 新建 Chat → 输入以下 Prompt(注意保留换行与缩进,这是触发结构化理解的关键):
“按 .project-rules.md 规范,用 Express 实现一个单接口服务:POST /api/clean-csv。接收 multipart/form-data 格式上传的 Excel 文件(.xlsx/.xls),读取首张表,自动识别表头为字段名,对‘手机号’‘邮箱’两列执行去重+基础格式校验(手机号11位纯数字、邮箱含@且有域名),将清洗后数据写入 CSV 并返回下载链接。所有中间错误必须捕获并返回标准 error 响应。”
第三步:等待 AI 生成完整代码后,**不要直接运行**——先检查 【/src/routes/cleanCsvRoute.js 中是否包含 multer 配置且 limits.fileSize = 10 * 1024 * 1024】,若缺失,手动补全,否则上传大文件时会直接 413 错误且无提示。
第四步:终端执行 npm install → node src/server.js → 用 Postman 发送含 Excel 的 POST 请求,验证响应结构与 CSV 下载行为。
修复Vibe Coding生成代码中的典型缺陷
AI生成的代码常在边界处失效:空文件不报错、重复字段名崩溃、特殊字符导致 CSV 格式错乱。这些不是Prompt问题,而是缺少人工兜底校验层。
方法一:插入预校验中间件
在 /src/middleware/fileValidation.js 中新建文件,写入:
const validateExcel = (req, res, next) => {<br> if (!req.files || Object.keys(req.files).length === 0) {<br> return res.status(400).json({ code: 400, msg: '未上传文件' });<br> }<br> const file = req.files.file;<br> if (!file.mimetype.includes('excel')) {<br> return res.status(400).json({ code: 400, msg: '仅支持 .xlsx 或 .xls' });<br> }<br> if (file.size > 10 * 1024 * 1024) {<br> return res.status(413).json({ code: 413, msg: '文件超过10MB' });<br> }<br> next();<br>};<br>module.exports = { validateExcel };
方法二:强制字段白名单校验
在 /src/utils/excelProcessor.js 的解析逻辑前插入:
const requiredFields = ['手机号', '邮箱'];<br>const headers = worksheet['!ref'] ? XLSX.utils.sheet_to_json(worksheet, { header: 1 })[0] : [];<br>if (!requiredFields.every(f => headers.includes(f))) {<br> throw new Error(`缺少必需字段:${requiredFields.filter(f => !headers.includes(f)).join(', ')}`);<br>}
这一步操作起来很简单,直接把上面两段代码复制进对应文件即可,但缺了它,测试人员随便传个没表头的Excel就会让服务端直接抛未捕获异常。
让Vibe Coding输出带单元测试的代码
多数开发者忽略这点:没有测试的Vibe Coding产出=不可迭代代码。AI默认不生成测试,必须用强约束指令撬动。
步骤一:在 .project-rules.md 底部追加测试规范条款:
测试要求: 所有路由必须配套 Jest 测试用例,覆盖正常流程、空文件、非法格式、超限大小四类场景;测试文件与路由同名,置于 /tests/routes/ 目录下;断言必须包含 status、code、data 结构校验。
步骤二:向 Cursor Chat 补充指令:
“除原需求外,同步生成 /tests/routes/cleanCsvRoute.test.js,用 Jest 模拟上传三种文件:1)合法 Excel;2)空 Excel;3).txt 伪装文件;每个测试必须 assert response.status 和 response.body.code。”
步骤三:执行 npm test,确认四条测试全部通过——若出现 【TypeError: Cannot read properties of undefined (reading '0')】,说明 AI 未处理空工作表,需在 excelProcessor.js 中补充 if (!worksheet || !worksheet['!ref']) throw new Error('工作表为空');










