使用express-validator时VS Code代码智能提示异常问题求助
解决方案
前置依赖检查
首先安装VS Code智能提示依赖的类型声明包,即使是纯JavaScript项目也需要安装:
npm i -D @types/express @types/node
如果你之前单独安装过@types/express-validator请先卸载,v6及以上版本的express-validator已经内置类型声明,额外安装会导致版本冲突:
npm uninstall @types/express-validator
问题1:数组传参后res提示失效修复
该问题是类型推导失败导致的,可通过手动标注参数类型解决:
- 如果你使用TypeScript开发:
给路由处理函数的req、res参数添加类型标注即可:import { Request, Response } from 'express'; router.post('/register', [ body('email').isEmail(), body('password', 'Password must be 7 characters long').isLength({ min: 7 }) ], (req: Request, res: Response) => { const errors = validationResult(req); if (!errors.isEmpty()) { return res.status(400).json({ errors: errors.array() }); } }); - 如果你使用JavaScript开发:
用JSDoc标注参数类型,效果和TS标注一致:/** * @param {import('express').Request} req * @param {import('express').Response} res */ router.post('/register', [ body('email').isEmail(), body('password', 'Password must be 7 characters long').isLength({ min: 7 }) ], (req, res) => { const errors = validationResult(req); if (!errors.isEmpty()) { return res.status(400).json({ errors: errors.array() }); } });
问题2:body方法链式调用提示失效修复
- 首先确认
body的导入方式正确,必须使用解构导入:// 正确 const { body } = require('express-validator'); - 按
Ctrl+Shift+P(Mac为Cmd+Shift+P),搜索并执行「TypeScript: Restart TS Server」,重启内置的类型服务后重试 - 可在项目根目录新增
jsconfig.json提升类型推导准确性,内容如下:{ "compilerOptions": { "module": "commonjs", "target": "ES6", "checkJs": true }, "exclude": ["node_modules"] }
额外排查
打开VS Code设置,确认javascript.suggest.enabled和typescript.suggest.enabled两个配置项处于开启状态。
内容的提问来源于stack exchange,提问作者user15764153
相关产品推荐
相关产品推荐

