当推送Node_modules直到Heroku的本地Node.js项目Git repo时,本地node_modules覆盖Heroku上的那些吗?

我想更好地理解我的本地机器上的Node项目的一部分node_modules与驻留在Heroku上的应用程序的一部分之间的关​​系。

当我在本地构build和testing项目时(在我的机器上,使用localhost ),我需要下载各种Node模块(例如, mongodbmongooseutilexpress等)。 当我在本地testing我的应用时,我想将其推送到服务器。 当我推动, node_modules文件夹也被推上去。

那么,如果我已经通过我的账户的/ app的仪表板,已经安装了MongoDB (通过Heroku的MongoLab附加组件)和Mongoose ,然后我推动我的项目,其中有一个node_modules文件夹(包含mongodb )? 我的本地mongodb node_module是否覆盖在Heroku上使用MongoLab shell创build的模块? 还是Heroku忽略我的推动并保留其版本?

那数据库呢? 据推测,数据库(本地和Heroku)是完全隔离的,所以不存在任何冲突的可能性。 所以我更感兴趣的是知道node_modules的内容会发生什么。

我知道你可以设置.gitgnore忽略各种东西(如node_modules文件夹),但是我失去了我的应用程序需要的其他模块,它不会运行。 而且我知道你可以有select地排除某些文件夹。 问题是我是否需要添加任何条目到我的.gitignore排除像MongoDB(和/或mongoose)的东西。

谢谢你的澄清。

你应该把你的模块依赖关系添加到package.json并在你的.gitignore添加node_modules/

通过package.json列出的依赖关系,Heroku将在每次推送时下载这些包,并且可以轻松地使开发环境与您的部署环境保持同步。

本地的MongoDB独立于你的Heroku的MongoDB,但是,如果你想设置你的开发环境来访问Heroku的MongoDB,你可以通过从Heroku提取环境variables并将它们放在`.env'中来实现:

 heroku config -s > .env 

然后你可以用foreman启动你的应用程序,它会在你的.env加载环境variables

 foreman start 

然后你的开发应用程序将连接到你的Heroku应用程序所在的MongoDB实例。 如果您在Heroku上保留一个临时应用程序,这非常有用。