Heroku部署NextJS/ExpressJS应用出现npm Host key verification failed错误
问题根因
你的部署报错由两个核心问题触发:
- 依赖安装阶段,npm尝试通过SSH协议拉取
js-xlsx的GitHub仓库代码,但Heroku构建环境没有配置可访问该仓库的SSH密钥,鉴权失败 - 你的
package.json中没有指定Node.js和npm版本,Heroku使用默认版本可能存在兼容性隐患
解决方案
- 优先替换SSH协议的依赖地址
打开你项目根目录的package.json,找到dependencies中js-xlsx对应的配置项:
如果你当前写的是"js-xlsx": "git+ssh://git@github.com/securedeveloper/js-xlsx.git",请替换为HTTPS协议的地址:"js-xlsx": "git+https://github.com/securedeveloper/js-xlsx.git";如果该包有公开发布的npm版本,直接替换为官方npm包配置"xlsx": "^0.18.5"(可根据你需要的版本调整)即可,无需直接拉取Git仓库源码。 - 补充Node.js版本声明
在package.json中新增engines字段,明确指定你项目兼容的Node.js和npm版本,示例如下:{ "name": "your-project-name", "version": "1.0.0", "engines": { "node": "14.x", "npm": "6.x" }, "dependencies": { // 你的其他依赖 } } - 若你确实需要拉取私有Git仓库的依赖,请生成拥有该仓库读取权限的GitHub个人访问令牌,将依赖地址修改为带令牌的HTTPS格式:
"js-xlsx": "git+https://<你的GitHub令牌>@github.com/securedeveloper/js-xlsx.git"即可。
修改完成后重新提交代码推送Heroku即可正常构建。
内容的提问来源于stack exchange,提问作者Sharif
相关产品推荐
相关产品推荐

