Netlify部署失败:Build script returned non-zero exit code:2
问题原因
外层提示Build script returned non-zero exit code: 2是Netlify对构建脚本执行失败的通用报错,真正的触发点是日志里明确抛出的sh: 1: tsc: not found——构建环境执行编译命令时找不到TypeScript的执行程序tsc,具体诱因通常是两点:
- 本地开发时全局安装了TypeScript,所以本地执行
tsc命令正常,但没有把typescript包写入项目的package.json依赖列表,Netlify构建环境不会全局预装TypeScript,拉取代码安装依赖时就不会装这个包 - 把
typescript放在了devDependencies开发依赖列表里,但Netlify默认生产构建时执行npm install会默认跳过开发依赖安装,导致项目内的typescript包没被装上,找不到对应的执行命令
修复步骤
按顺序操作即可解决:
- 补全项目依赖
在本地项目根目录执行命令,将TypeScript作为项目开发依赖安装,不要依赖全局环境的包:npm install typescript --save-dev
安装完成后检查package.json的devDependencies字段,确认存在typescript的版本声明,同时确保package.json、package-lock.json文件都被提交到Git仓库,不要被.gitignore规则忽略。 - 调整构建配置,二选一即可
- 方案1(更稳妥,不需要改Netlify后台配置):修改
package.json里的build脚本,直接通过npx调用项目本地依赖里的tsc,避免找不到全局命令的问题,修改后脚本如下:{ "scripts": { "build": "npx tsc && vite build" } } - 方案2:修改Netlify站点配置,进入站点设置的构建环境变量页面,新增环境变量
NPM_FLAGS,值设为--include=dev,让构建时安装依赖同时拉取开发依赖列表里的包。如果使用的是npm v6及更早版本,新增环境变量NPM_CONFIG_PRODUCTION,值设为false即可。
- 方案1(更稳妥,不需要改Netlify后台配置):修改
- 清除缓存重新部署
进入Netlify站点的部署列表页,选择清除缓存后重新触发部署,避免旧的错误缓存干扰构建流程。
内容的提问来源于stack exchange,提问作者Uvais wali Khan
相关产品推荐
相关产品推荐

