应用配置从自动缩放改手动后遇模块缺失及500错误求助
问题排查与解决
核心原因
错误源于两个关键配置问题:
entrypoint指定的index.js并非SvelteKit + adapter-appengine构建后的正确入口文件handlers配置不完整,导致请求路由无法正确处理,同时手动缩放模式下的/_ah/start健康检查无法通过
具体修复步骤
1. 修正entrypoint配置
SvelteKit通过adapter-appengine构建后,默认生成的入口文件是server.js(位于构建输出目录,通常是build文件夹)。修改entrypoint为:
entrypoint: node build/server.js
注:如果你的构建输出目录不是
build,请替换为svelte.config.js中adapter配置指定的实际目录名。
2. 补全handlers配置
handlers字段缺失会导致App Engine无法正确路由请求,包括手动缩放必需的健康检查端点。完整配置应覆盖静态资源和动态路由:
handlers: # 处理SvelteKit生成的静态资源 - url: /(.*\.(html|css|js|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot))$ static_files: build/\1 upload: build/(.*\.(html|css|js|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot))$ secure: always # 转发所有动态请求给server.js - url: /.* script: auto secure: always
3. 验证构建输出
部署前先本地执行构建,确认build目录下存在server.js:
npm run build
检查build目录结构,确保server.js和静态资源都已生成。
4. 重新部署
修改完app.yaml后,重新部署到App Engine:
gcloud app deploy
额外说明
手动缩放模式下,App Engine会调用/_ah/start启动实例,只有该端点返回200状态码,实例才会被标记为健康。入口文件错误会导致实例启动失败,反复返回500错误。修正配置后,实例能正常启动,健康检查通过,错误即可消除。
内容的提问来源于stack exchange,提问作者gru
相关产品推荐
相关产品推荐

