SvelteKit部署Ubuntu服务器报错:await server.init({env: process.env})
解决SvelteKit部署Ubuntu服务器时
await server.init({env: process.env})启动错误 针对你遇到的问题,按以下步骤排查解决:
纠正启动命令
先明确构建与启动的正确流程:- 执行构建命令生成生产产物:
npm run build - 构建完成后,启动服务器的正确命令是:
node build(adapter-node默认将产物输出到build目录,Node会自动加载目录下的index.js)
不要把node build当作构建命令执行,这是启动环节的操作。
- 执行构建命令生成生产产物:
升级Node.js到兼容版本
SvelteKit要求Node.js版本至少为v16.14.0,Ubuntu默认仓库的Node版本通常偏低,执行node -v查看当前版本:- 若版本不达标,用nvm安装LTS版本:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc nvm install --lts nvm use --lts
- 若版本不达标,用nvm安装LTS版本:
重新构建并检查产物完整性
执行npm run build时,仔细查看终端输出,确保没有编译错误。如果构建过程中出现报错(比如依赖缺失、代码语法错误),先解决这些问题,再尝试启动服务器。配置必要环境变量
启动服务器时,需确保关键环境变量已设置:- 指定端口:
PORT=3000 node build(默认端口为3000,可根据需求修改) - 启用生产环境模式:
NODE_ENV=production node build
如果项目依赖自定义环境变量,可通过.env文件管理,需在build/index.js开头添加require('dotenv').config()(前提是已安装dotenv包:npm install dotenv --save)。
- 指定端口:
排查自定义服务器逻辑(如果有)
如果你在项目中自定义了服务器初始化代码(比如修改了hooks或添加了自定义服务器脚本),确认没有错误修改server.init的参数,保持{ env: process.env }的默认配置即可,不要遗漏必要参数。
内容的提问来源于stack exchange,提问作者Die Leertaste
相关产品推荐
相关产品推荐

