phpstorm内置终端运行npm run dev会卡在“compiling…”是因为其终端模拟层截断tty信号,导致hmr失效、服务未真正启动;应改用系统终端执行,phpstorm仅用于编辑与调试。

PhpStorm 本身不托管 Vue 开发服务器,强行让它启动 npm run dev 会导致热更新失效、端口占用、控制台无输出——这不是配置没到位,是根本用错了执行路径。
为什么在 PhpStorm 内置终端运行 npm run dev 会卡在 “Compiling…”
PhpStorm 的内置终端默认启用“Shell integration”和“Emulate terminal in output console”,但 Vue CLI 或 Vite 启动的服务依赖完整的 TTY 环境与信号转发(比如 SIGUSR2 触发热更新)。PhpStorm 终端模拟层会截断或忽略这些底层交互,导致进程挂起、HMR 不触发、浏览器空白页。
常见现象包括:
- 控制台只打印
Compiling...后再无日志,实际服务并未真正监听 - 修改
.vue文件后浏览器无刷新,Network 面板看不到hot-update.json请求 - 手动访问
http://localhost:3000显示连接被拒绝,lsof -i :3000查不到进程
正确做法:关闭所有 PhpStorm 的 Run Configuration,用系统终端(macOS Terminal / Windows PowerShell / Linux GNOME Terminal)执行 npm run dev 或 pnpm dev。PhpStorm 只负责编辑、跳转、断点调试 —— 它不是运行容器。
ref、defineProps 标红且无法跳转的真正原因
标红不是插件没装,而是 PhpStorm 没把当前文件识别为 Vue 3 + TypeScript 上下文。它需要同时满足三个条件才能激活响应式类型推导:
- 项目根目录存在
package.json,且dependencies或devDependencies中包含"vue": "^3.4.0"或更高版本 -
node_modules已完整安装(vue和@vue/runtime-core必须存在) -
tsconfig.json的compilerOptions.types包含"vue",例如:"types": ["webpack-env", "jest", "vue"]
如果用了 <script setup lang="ts"></script>,还需确认 Settings → Languages & Frameworks → JavaScript → Libraries 中已勾选 Vue.js 库(不是“Download”,是已识别本地 node_modules/vue)。
<template></template> 里写 v-if 没提示、@click 标黄怎么办
这是语言注入缺失,不是 Vue 插件故障。PhpStorm 默认把整个 .vue 当作纯文本处理,<template></template> 块不会自动当 HTML、<script></script> 块也不会自动当 TS/JS。

