使用Node+PM2部署SvelteKit应用时遇/build模块找不到错误
解决SvelteKit + Node适配器 + PM2部署时找不到build目录的问题
问题核心
部署后PM2显示运行,但站点无法访问,错误日志提示找不到/var/www/bap24/public_html/build目录,实际目录中只有output文件夹,与适配器配置的输出目录不匹配。
修复步骤
修正SvelteKit适配器的输出目录配置
打开svelte.config.js,将适配器的out参数改为实际存在的output目录:import { vitePreprocess } from "@sveltejs/vite-plugin-svelte"; import adapter from "@sveltejs/adapter-node"; /** @type {import('@sveltejs/kit').Config} */ const config = { kit: { adapter: adapter({ out: "output" }), }, }; export default { preprocess: [vitePreprocess({})], config, };同步package.json的start脚本
修改package.json中的start命令,指向正确的输出目录:{ "name": "bap24", "version": "0.0.1", "private": true, "type": "module", "scripts": { "dev": "vite dev", "build": "vite build", "preview": "vite preview", "start": "node output", "check": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch" } }重新构建并重启PM2服务
- 执行构建命令生成正确目录的产物:
npm run build - 重启PM2应用:
或者通过配置文件重启:pm2 restart bap24pm2 restart ecosystem.config.cjs
- 执行构建命令生成正确目录的产物:
原因分析
适配器配置指定输出到build目录,但实际构建产物生成在output目录,导致PM2执行node build时找不到对应模块,服务启动失败,进而无法访问站点。
内容的提问来源于stack exchange,提问作者Stef Verniers
相关产品推荐
相关产品推荐

