Plesk服务器执行npm i安装依赖时Prisma预安装脚本报错如何解决?
故障原因
- 报错核心为
spawn sh ENOENT,说明Prisma的preinstall脚本执行时,系统找不到sh可执行文件。Plesk默认会给站点的Node.js运行环境设置受限的PATH变量,未包含系统shell的默认路径,导致脚本执行失败。 - Plesk虚拟主机的默认执行用户权限受限,没有权限触发Prisma预安装脚本需要的子进程调用操作。
- 服务器Node.js/npm版本过旧,你当前使用的npm 6.14.14版本和Prisma 2.x版本的兼容性存在已知问题,会导致脚本执行异常。
修复步骤
- 优先修改Node.js环境变量:登录Plesk后台,进入对应站点的「Node.js」配置页,在「环境变量」区域新增条目,键为
PATH,值为/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH,保存配置后重新执行npm i即可。 - 若修改环境变量无效,可临时跳过脚本执行:运行
npm i --ignore-scripts完成依赖安装,之后手动执行npx prisma generate生成Prisma客户端即可正常使用。 - 升级Node.js版本:在Plesk的Node.js配置页将运行版本切换为16.x及以上的LTS版本,同步升级npm到7.x以上版本后再执行安装操作,可解决版本兼容性导致的报错。
- 检查执行用户权限:确保你执行
npm i命令的SSH用户为站点根目录的所有者用户,使用受限用户执行命令会触发权限不足类的脚本执行错误。
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

