我在package.json中设置了这个,在localhost
中工作正常{
...
"mongoose": "4.x",
"mongoose-auto-increment": "5.x"
...
}
当时安装mongoose 4.2.2和mongoose-auto-increment 5.0.1。 Heroku日志正在给出这个:
npm ERR! node v4.2.1
npm ERR! npm v2.14.7
npm ERR! code EPEERINVALID
npm ERR! peerinvalid The package mongoose@4.1.11 does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer mongoose-auto-increment@5.0.1 wants mongoose@^4.1.12
似乎Heroku使用了不同的过时npm或严重依赖缓存?因为mongoose 4.2.2软件包发布于npmjs.com 16小时前
答案 0 :(得分:0)
Heroku使用的缓存就像您的本地node_modules
目录一样。这与您在本地通过首先安装mongoose 4.1.11然后再安装mongoose-auto-increment所看到的行为相同:
v4.1.1:~/test/epeer$ npm install --save mongoose@4.1.11
...
v4.1.1:~/test/epeer$ npm install --save mongoose-auto-increment@5.0.1
npm WARN peerDependencies The peer dependency mongoose@^4.1.12 included from mongoose-auto-increment will no
npm WARN peerDependencies longer be automatically installed to fulfill the peerDependency
npm WARN peerDependencies in npm 3+. Your application will need to depend on it explicitly.
npm ERR! Darwin 14.5.0
npm ERR! argv "/Users/hloftis/.nvm/versions/node/v4.1.1/bin/node" "/Users/hloftis/.nvm/versions/node/v4.1.1/bin/npm" "install" "--save" "mongoose-auto-increment@5.0.1"
npm ERR! node v4.1.1
npm ERR! npm v2.14.4
npm ERR! code EPEERINVALID
npm ERR! peerinvalid The package mongoose@4.1.11 does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer mongoose-auto-increment@5.0.1 wants mongoose@^4.1.12
在本地,你可能会更新一个,然后安装另一个,甚至只是rm -rf node_modules
。在Heroku上,您可以禁用node_modules
缓存以获得相同的结果:
$ heroku config:set NODE_MODULES_CACHE=false
$ git push heroku master
$ heroku config:unset NODE_MODULES_CACHE
然而,很多更好的技术是指定确切的依赖关系,而不是让你的应用程序的依赖关系漂移。因此,而不是' 4.x'只需指定' 4.2.2'而不是' 5.x'指定' 5.0.1'。这样您就知道您正在开发和测试的软件包与您正在部署的软件包完全相同 - 通过使用semver范围,您的依赖项版本可以随时更改为满足该范围的任何内容。