GCP构建Docker-php容器时报npm不支持Node.js v14.17.1错误如何解决
问题原因解答
1. 未指定nodejs版本仍出现不兼容的原因
你在RUN指令的第一行主动添加了http://dl-cdn.alpinelinux.org/alpine/v3.8/main作为软件源,Alpine 3.8是2018年发布的旧版本分支,该分支下的nodejs-npm包版本非常老旧,最高仅支持Node.js 11及更早版本。
而你没有指定nodejs包的版本时,apk会从所有启用的软件源(包括基础镜像自带的更高版本Alpine源)中拉取版本号最高的nodejs包,也就是报错中出现的v14.17.1,老旧的npm和高版本Node.js匹配就会触发版本不兼容错误。
2. 查询apk可安装的nodejs版本的方法
你可以通过以下两个命令查询:
- 查看所有源中nodejs包的版本及优先级:
apk policy nodejs - 列出所有可安装的nodejs版本:
apk search -a nodejs
修复方案
最简单的修复方式是直接删除RUN指令中安装nodejs-npm的条目:
目前新版本的Node.js包已经内置了对应匹配版本的npm,不需要单独安装
nodejs-npm包,删除后即可避免版本不匹配问题。
如果你的业务必须保留Alpine 3.8源的旧依赖(比如libcrypto1.0、libssl1.0这类后续Alpine版本已移除的包),不需要调整其他配置,仅删除nodejs-npm这一项即可正常构建。
内容的提问来源于stack exchange,提问作者gvanto
相关产品推荐
相关产品推荐

