【问题标题】:How to bundle NodeJs Application?如何捆绑 NodeJs 应用程序?
【发布时间】:2018-05-05 17:23:52
【问题描述】:

考虑一下,我已经使用 Express 和 MongoDB 应用程序完成了我的 NodeJ。我可以捆绑我的应用程序以将其交付给客户端,但在这种情况下,客户端必须安装所有必需的 npm 模块并更改 mongoDB 连接 url。所以为了解决这个问题:

有没有其他方法可以捆绑我的应用程序,这样客户端就不需要安装任何 npm 模块来运行应用程序?如果是,那么客户端如何连接到他的 mongodb?

【问题讨论】:

  • 为什么他们安装 NPM 模块有问题?
  • @skwidbreth:我不希望客户打开他的命令提示符并运行 npm install。
  • 如果您的所有模块都安装在本地(不是全局),您可以压缩整个层次结构,包括 node_modules 目录中的所有 NPM 模块,然后它们可以解压缩整个层次结构。至于 MongoDB 应用程序的位置,您应该对您的应用程序进行编码,以便可以通过环境变量或配置文件进行控制,客户可以编辑该配置文件以指定其数据库的位置。
  • @user2672420 然后我会在上面提到第二个 jfriend00 的建议 ^^

标签: node.js mongodb


【解决方案1】:

Vercel 的pkg 非常适合我。它将所有内容捆绑到一个从终端运行的单个可执行文件中。这使得分发变得非常容易。

要连接到 Mongo 实例,您必须拥有某种用户可以编辑的配置文件。我建议放入用户数据文件夹(Mac 上的应用程序支持和 Windows 上的 AppData),但您可以将它放在打包的可执行文件旁边。

【讨论】:

  • 是否可以将 mongodb 安装包含到 pkg 创建的可执行文件中?用例是节点应用程序将使用本地 mongo 实例,但实际上并未安装在系统上。
  • 天哪,我不知道这是否可能。 Mongo 是它自己的可执行文件,并在它自己的运行时中运行,独立于节点。我敢肯定,您可以想办法将 mongod 可执行文件与 pkg 应用程序捆绑在一起,并使用命令行从 Node 内运行它,但这似乎不太理想。更好的选择是捆绑基于节点的数据库,例如 LevelDB 或 LokiJS。
猜你喜欢
  • 2022-07-30
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 2014-10-08
  • 2012-05-29
  • 2011-11-05
  • 1970-01-01
相关资源
最近更新 更多