当推送Node_modules直到Heroku的本地Node.js项目Git repo时,本地node_modules覆盖Heroku上的那些吗?
我想更好地理解我的本地机器上的Node项目的一部分node_modules
与驻留在Heroku上的应用程序的一部分之间的关系。
当我在本地构build和testing项目时(在我的机器上,使用localhost
),我需要下载各种Node模块(例如, mongodb
, mongoose
, util
, express
等)。 当我在本地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上保留一个临时应用程序,这非常有用。