首先,我想将我的所有文件推送到heroku以用于托管目的,在这里我无法在heroku上安装multer和multer-gridfs-storage的依赖项,所以这就是为什么我无法在heroku上托管我的网站
remote: -----> Installing dependencies
remote: Installing node modules
remote: npm ERR! code ERESOLVE
remote: npm ERR! ERESOLVE could not resolve
remote: npm ERR!
remote: npm ERR! While resolving: [email protected]
remote: npm ERR! Found: [email protected]
remote: npm ERR! node_modules/multer
remote: npm ERR! multer@"^1.4.5-lts.1" from the root project
remote: npm ERR!
remote: npm ERR! Could not resolve dependency:
remote: npm ERR! peer multer@"^1.4.2" from [email protected]
remote: npm ERR! node_modules/multer-gridfs-storage
remote: npm ERR! multer-gridfs-storage@"^5.0.2" from the root project
remote: npm ERR!
remote: npm ERR! Conflicting peer dependency: [email protected]
remote: npm ERR! node_modules/multer
remote: npm ERR! peer multer@"^1.4.2" from [email protected]
remote: npm ERR! node_modules/multer-gridfs-storage
remote: npm ERR! multer-gridfs-storage@"^5.0.2" from the root project
remote: npm ERR!
remote: npm ERR! Fix the upstream dependency conflict, or retry
remote: npm ERR! this command with --force, or --legacy-peer-deps
remote: npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
remote: npm ERR!
remote: npm ERR! See /tmp/npmcache.fbHb6/eresolve-report.txt for a full report.
remote:
remote: npm ERR! A complete log of this run can be found in:
remote: npm ERR! /tmp/npmcache.fbHb6/_logs/2022-10-22T21_00_27_665Z-debug-0.log
remote:
remote: -----> Build failed
remote:
remote: We're sorry this build is failing! You can troubleshoot common issues here:
remote: https://devcenter.heroku.com/articles/troubleshooting-node-deploys
remote:
remote: If you're stuck, please submit a ticket so we can help:
remote: https://help.heroku.com/
remote:
remote: Love,
remote: Heroku
remote:
remote: ! Push rejected, failed to compile Node.js app.
remote:
remote: ! Push failed
-lts.1
上的 multer@"^1.4.5-lts.1"
后缀导致它与来自 ^1.4.2
的对等版本约束 [email protected]
不匹配。根据npm semver计算器,满足此版本约束的Multer最新版本是1.4.4
。
鉴于版本
1.4.5-lts.1
似乎是 1.x 开发线的兼容延续,并且 Multer 存在于 NPM 生态系统中,我认为这是 Multer 项目中的一个错误。它的版本号应该满足NPM对semver的理解。
最简单的解决方案是减少对 Multer 的直接依赖,从版本
^1.4.5-lts.1
减少到版本 1.4.4
,这满足了 Multer GridFS 存储的对等依赖。希望您不要依赖新版本中的任何功能或错误修复。
我已经提交了针对 Multer 项目的错误,表明其 LTS 版本限制仍然与 semver 兼容,假设
1.4.5-lts.1
版本实际上应该与 1.4.4
及更早版本兼容。
️我对 semver 或 NPM 的了解不够,不知道这个实现是否真的正确。重要的是 Multer 项目和 NPM 的 semver 实现似乎是冲突的。
我相信
-lts.1
后缀被认为是 预发布(即 1.4.4-lts.1
会出现在之前 1.4.4
)。 semver 计算器似乎同意:使用 >=1.4.2 <=1.4.4-lts.1
的版本约束匹配版本 1.4.2
、1.4.3
和 1.4.4-lts.1
,但 不 1.4.4
。
npm 我 multer-gridfs-storage --legacy-peer-deps
上面的命令工作得很好。