Next.js 14部署至AWS S3 Serverless报错:target属性已废弃
解决Next.js 14部署AWS S3+Serverless时的target属性错误
问题出在哪
你用的@sls-next/serverless-component@3.6.0是针对Next.js 12及更早版本开发的,这个组件内部会自动往next.config.js注入target: 'serverless'配置,但Next.js 13+已经移除了target属性,改用output字段,所以部署时触发了这个错误。
具体解决办法
1. 替换旧的serverless组件
@sls-next/serverless-component已停止维护,官方推荐使用继任组件或Next.js官方部署方案:
- 卸载旧组件:
npm uninstall @sls-next/serverless-component - 安装兼容Next.js 13+的组件:
注:该组件目前处于维护模式,长期建议迁移到Next.js官方的npm install @serverless-nextjs/component@latestoutput: "standalone"配合AWS Lambda部署方案。
2. 调整next.config.mjs配置
确保配置仅保留Next.js 14支持的字段,移除任何可能存在的target相关配置,正确的output配置示例:
/** @type {import('next').NextConfig} */ const nextConfig = { output: "standalone", // 你的其他自定义配置 }; export default nextConfig;
3. 更新serverless框架版本
你当前使用的serverless@2.72.2版本较旧,升级到最新稳定版避免兼容性问题:
npm install -g serverless@latest
或部署时直接使用最新版本命令:
npx serverless@latest deploy
4. 备选方案:使用Next.js官方AWS部署方式
如果组件方案仍有问题,直接采用官方步骤部署:
- 本地构建生成standalone产物:
npm run build - 将
.next/standalone、.next/static和public目录上传至S3存储静态资源;将.next/standalone部署到AWS Lambda处理SSR及API路由,配合CloudFront实现CDN加速。
验证步骤
- 先本地执行
npm run build确认无错误 - 删除
.serverless目录清理部署缓存后重新部署 - 检查
serverless.yml配置文件,若存在target相关配置则删除
内容的提问来源于stack exchange,提问作者shiva shukla
相关产品推荐
相关产品推荐

