You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否将./server.ts设为Vite SSR构建入口并保持SSR正常运行?

解决方案

1. 修改Vite配置,指定SSR入口为server.ts

在vite.config.ts中更新build.ssr配置,将入口指向你的server.ts,Vite会自动处理TypeScript编译,同时打包server.ts及其依赖的entry-server.ts:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  plugins: [vue()],
  build: {
    ssr: './server.ts',
    outDir: 'dist',
    rollupOptions: {
      // 标记无需打包的外部依赖(比如express这类Node.js原生库)
      external: ['express']
    }
  }
})

2. 调整server.ts中的导入逻辑

既然Vite会打包server.ts,直接导入源文件src/entry-server.ts即可,无需再引用dist目录的产物:

// 替换原动态导入语句
import { render } from './src/entry-server'

// 若需开发模式热更新,可保留动态导入但指向源文件
// const { render } = await import('./src/entry-server')

3. 更新package.json脚本

修改打包和启动脚本,确保正确触发SSR打包并运行产物:

{
  "scripts": {
    "build": "vite build && vite build --ssr",
    "dev": "vite",
    "start": "node dist/server.js"
  }
}

说明:vite build先打包客户端资源,vite build --ssr会基于配置的SSR入口打包服务端代码。

4. 验证运行

  • 开发模式:执行pnpm dev,Vite自动处理TS编译和热更新,无需手动构建
  • 生产模式:执行pnpm build完成打包后,用pnpm start启动服务

这样既不用手动配置TypeScript构建,也能让server.ts作为SSR入口正常工作,同时解决了entry-server.ts的导入问题。

内容的提问来源于stack exchange,提问作者Robert Kajic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 06:23:13