2

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

当我在本地(在我的机器上,使用 my localhost)构建和测试项目时,我需要下载各种 Node 模块(例如 、、mongodbmongoose等)。当我在本地测试我的应用程序时,我想将它推送到服务器。当我进行推送时,该文件夹也会被向上推送。utilexpressnode_modules

那么,如果我已经安装MongoDB(通过 HerokuMongoLab附加组件)并Mongoose通过我的帐户/应用程序的仪表板安装在 Heroku 上,然后我将我的项目向上推,该项目有一个node_modules文件夹(包含mongodb),会发生什么?我的本地是否会覆盖使用Heroku 上mongodb node_module的 shell 创建的模块?MongoLab还是 Heroku 会忽略我的推送并保留其版本?

那么数据库呢?大概数据库(本地和 Heroku)彼此完全隔离,因此那里不可能发生任何冲突。所以我更想知道node_modules.

我知道你可以设置.gitgnore忽略各种东西(比如node_modules文件夹),但是我会丢失我的应用程序需要的其他模块,并且它不会运行。而且我知道您可以有选择地排除某些文件夹。问题是我是否需要添加任何条目来.gitignore排除诸如 MongoDB(和/或 Mongoose)之类的东西。

感谢期待澄清。

4

1 回答 1

2

您应该将您的模块依赖项添加package.jsonnode_modules/您的.gitignore.

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

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

heroku config -s > .env

然后你可以启动你的应用程序,foreman它会在你的.env

foreman start

然后,您的开发应用程序将连接到与 Heroku 应用程序相同的 MongoDB 实例。如果您在 Heroku 上保留一个暂存应用程序,这将非常有用。

于 2013-06-08T17:46:00.210 回答