Azure App Service部署Node应用时patch-package postinstall执行失败
问题解决方法
报错根因为:Azure Windows 环境的命令行执行 npm 脚本时,默认不会将项目本地 node_modules/.bin 目录加入系统PATH,导致直接写 patch-package 时系统找不到对应可执行文件。
可按以下优先级选择方案修复:
- 方案1:修改
package.json中的postinstall脚本,直接通过node调用patch-package的入口文件,兼容性最高,全平台通用:
"scripts": { "postinstall": "node node_modules/patch-package/index.js" }
- 方案2:使用npx调用本地安装的patch-package,npm 5.2及以上版本都支持该用法:
"scripts": { "postinstall": "npx patch-package" }
- 方案3:显式指定patch-package的可执行文件相对路径,npm会自动适配Windows的路径分隔符:
"scripts": { "postinstall": "./node_modules/.bin/patch-package" }
修改完成后重新触发部署即可,也可以在Kudu命令行手动执行npm run postinstall验证是否生效。如果以上方案都不生效,可以自定义Kudu部署脚本,在部署流程中先执行npm install,再手动执行node node_modules/patch-package/index.js即可。
内容的提问来源于stack exchange,提问作者Joel
相关产品推荐
相关产品推荐

