Vite 项目 SSR 实际依赖 Node.js 进程运行,关键在于确保 Node 环境可用、SSR 入口正确导出 HTTP 服务、调试器能 attach 到服务进程,而非 VSCode 自身配置 SSR。

vite 本身不内置 SSR 运行时,所谓“Vite 项目的 SSR”实际指用 vite-plugin-ssr 或手动集成 express/koa + renderToString 的服务端入口。VSCode 只负责编辑和启动,真正跑 SSR 的是 Node.js 进程——所以关键不是“VSCode 配置 SSR”,而是:**确保 Node 环境可用、SSR 入口能被正确执行、调试器能 attach 到服务进程**。
确认 Node 版本与全局命令可用
VSCode 终端是否能识别 node、npm、npx,取决于系统 PATH 是否包含 Node 安装路径。常见现象:npm run dev 在终端报 command not found: node 或 spawn node ENOENT。
- 在 VSCode 内置终端运行
which node(macOS/Linux)或where node(Windows),看输出路径是否和你安装的 Node 一致 - 若为空或指向错误路径,说明 VSCode 没读取到系统环境变量——关掉 VSCode,从开始菜单(非快捷方式)重新启动它,避免继承旧 shell 环境
- 别依赖 VSCode 设置里的
terminal.integrated.env手动加 PATH,容易漏掉 npm 全局 bin 目录(如C:\Users\XXX\AppData\Roaming\npm)
SSR 入口文件必须导出可执行的 HTTP 服务
Vite 默认 dev 命令只起前端开发服务器。SSR 需要单独启动一个 Node 服务(比如 server.js 或 entry-server.ts),它要调用 createServer、renderToString 并监听端口。VSCode 不会自动识别哪个文件是 SSR 入口。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
- 检查
package.json中是否有类似"ssr:dev": "node server.js"或"ssr:dev": "ts-node src/server.ts"的 script -
server.js开头必须有import { createServer } from 'vite'或const express = require('express'),结尾要有app.listen(3000) - 如果用 TypeScript,确保已安装
ts-node且tsconfig.json中"module": "commonjs"(ESM 模式下require会失败)
调试 SSR 服务时 attach 要对准进程 ID
VSCode 的 .vscode/launch.json 如果写成 "request": "launch",它会尝试直接运行文件——但 SSR 服务常依赖 Vite 的开发中间件,直接 node server.js 启动可能报 Cannot find module 'vite'。
- 推荐用
"request": "attach"模式:先在终端运行npm run ssr:dev,再在 VSCode 里选中该 launch 配置并点击 ▶️ - 确保
launch.json中"port"和你的服务监听端口一致(如9229),且服务启动时加了--inspect-brk参数(例如node --inspect-brk server.js) - 别在
server.js里写console.log('ready')就以为能断点——Vite SSR 渲染逻辑通常在中间件回调里,断点要打在app.get('*', ...)或renderToString()调用处
常见报错与绕过方式
VSCode 里跑 SSR 最常卡在模块解析和路径问题,不是编辑器的问题,而是 Node 的 __dirname、import.meta.url 在 ESM 下行为突变。
-
Error [ERR_REQUIRE_ESM]: require() of ES Module:说明你用了require('./xx')加载了一个 .ts 或设置了"type": "module"的文件——统一改用import()动态导入,或把 SSR 入口改成.cjs后缀 -
Failed to resolve entry for package "vue":Vite SSR 插件没找到vue的服务端入口,检查vite.config.ts中是否配置了ssr: { external: ['vue'] },且node_modules/vue/server-renderer存在 - 修改
server.js后热更新不生效:Vite 的 HMR 不接管纯 Node 服务——你需要用nodemon包,脚本改成"ssr:dev": "nodemon --watch server.js --exec node server.js"

















