单仓库部署Next.js SST脚本报错:Cannot find package 'next'
问题原因及排查方向:Next.js + SST 单仓库部署找不到
next包 核心原因推测
单仓库环境下,SST构建或打包过程中未正确识别Next.js依赖的位置,导致部署包中缺失next模块。
具体排查步骤
确认SST配置的项目路径
在sst.config.ts的NextjsSite配置中,确保path参数指向当前apps/website目录(即path: "./"),避免因路径错误导致SST无法找到Next.js项目的依赖配置。示例:new NextjsSite(stack, "site", { path: "./", buildCommand: "npm run build" });检查单仓库工作区配置
如果使用npm/pnpm workspaces,需确保:- 根目录
package.json的workspaces字段包含apps/website; apps/website/package.json中显式声明next为依赖;- 部署前在根目录执行完整的依赖安装命令(
npm install/pnpm install),确保依赖被正确安装到根目录或项目本地node_modules。
- 根目录
排查SST打包的依赖排除规则
检查sst.config.ts中是否存在externals配置误将next排除在外,若有则移除该配置。同时可查看.sst/build目录下的部署产物,确认node_modules中是否包含next包,若缺失则说明构建过程未正确打包依赖。确认部署命令的执行目录
必须在apps/website目录下执行sst deploy命令,而非单仓库根目录,避免SST加载错误的项目上下文。验证本地构建是否正常
在apps/website目录手动执行npm run build,确认.next文件夹正常生成且无构建错误。若本地构建失败,先修复本地问题再尝试部署。查看SST调试日志
执行sst deploy --debug获取详细日志,重点关注构建阶段的依赖安装、打包步骤,定位是否有依赖遗漏或路径错误的提示。
内容的提问来源于stack exchange,提问作者Sergio Ramirez
相关产品推荐
相关产品推荐

