离线环境下Vetur/Volar本身不能直接做代码质量检测,因二者仅提供语法解析和补全,真正的ESLint或vue-tsc检查需本地已安装对应工具链、规则包及正确配置。

离线环境里 Vetur / Volar 能不能用代码质量检测
不能直接用。Vetur 和 Volar 本身不自带 ESLint 或 TypeScript 类型检查能力,它们只是提供 .vue 文件解析、语法高亮和基础补全;真正的代码质量检测(比如未定义变量、eslint-plugin-vue 规则、no-unused-vars)依赖外部工具链——而这些工具默认需要在线安装和解析。
离线启用检测的关键不是“装插件”,而是“把检测工具的可执行文件和规则包也带进来”。常见错误是:只装了 Volar,打开 .vue 文件发现没有红色波浪线,以为插件坏了,其实是因为 eslint 根本没运行。
- Vetur 需要本地已安装
eslint+eslint-plugin-vue,且项目中存在.eslintrc.js或package.json里的eslintConfig - Volar(推荐替代 Vetur)需配合
typescript-eslint和vue-tsc,这两者必须提前在有网机器上全局或本地安装,并拷贝整个node_modules目录 - VSCode 的设置里必须显式开启:
"vetur.validation.template": true或"volar.trace.server": "verbose",否则连日志都不输出,无法排查是否加载成功
npm install --offline 不等于“自动检测就开了”
npm install --offline 只跳过网络请求,但它不会 magically 激活 ESLint 插件或让 Volar 启动语言服务。如果你的项目之前没配过 lint,离线运行这个命令后依然不会有报错提示。
真正起作用的是:VSCode 启动时读取项目根目录下的配置文件,并调用对应二进制。离线环境下,这些二进制必须已存在且路径正确。
立即学习“前端免费学习笔记(深入)”;
递归分析 Vue 项目组件依赖,从入口文件生成组件层级图,支持 Vue 2/3,输出组件名、文件路径和属性。适用于分析组件结构、排查依赖或了解项目架构。
- 检查
node_modules/.bin/eslint是否存在(Vetur 场景) - 检查
node_modules/.bin/vue-tsc和node_modules/typescript是否完整(Volar + TS 场景) - 确保
package.json中devDependencies包含eslint、eslint-plugin-vue等,且版本与你拷贝的node_modules一致 - 如果用全局 ESLint(
npm install -g eslint),必须确认全局prefix路径已加入系统PATH,且 VSCode 终端能识别which eslint
离线验证 ESLint 是否真在工作
别只看编辑器有没有波浪线——那可能是 Vetur 自带的简单 HTML 模板校验,不是真实 ESLint 结果。要确认,得手动触发并观察输出。
在 VSCode 内置终端执行:npx eslint src/App.vue。如果报错 command not found 或 Cannot find module 'eslint',说明检测链断了;如果输出具体规则错误(如 'message' is assigned a value but never used.),才表示通路正常。
- 首次运行可能卡住几秒:这是
eslint在加载插件和配置,离线环境下无超时重试,耐心等 - 若提示
Failed to load parser '@typescript-eslint/parser',说明@typescript-eslint/parser没被拷贝进node_modules,或版本不匹配 - VSCode 设置中关闭
"eslint.runtime"(默认为 Node.js),避免因离线找不到node运行时导致静默失败
Volar + vue-tsc 离线类型检查比 Vetur 更可靠
Volar 是 Vue 官方推荐的下一代工具,其 vue-tsc 命令可离线做全量类型检查(类似 tsc --noEmit),且不依赖网络下载类型声明。但前提是:所有依赖的 @vue/runtime-dom、vue、typescript 必须版本对齐。
最容易被忽略的一点:Vue 3.3+ 项目若用了 defineModel() 等新 API,vue-tsc 版本必须 ≥ 1.8.22,否则直接报 Cannot find name 'defineModel' —— 这个错误和网络无关,纯属本地工具链版本滞后。
- 在有网机器运行:
npm pack vue-tsc得到vue-tsc-1.8.22.tgz,连同typescript-5.3.3.tgz一起拷入离线机 - 离线安装:
npm install -D vue-tsc-1.8.22.tgz typescript-5.3.3.tgz - 运行:
npx vue-tsc --noEmit --skipLibCheck,看到No errors found才算真正打通
离线环境里最麻烦的从来不是“装不上”,而是“看起来装上了,但某条 lint 规则或类型检查始终不触发”——往往卡在某个子依赖的版本号或 require 路径上,得一层层 console.log 或查 volar.trace.server 日志才能定位。

















