我正在为一个开源框架创建一个示例项目。为了让我的演示运行,它的一些依赖关系必须在其他端口上运行本地服务器。什么是启动多个本地node.js服务器的正确方法?
我宁愿给他们提供一个命令来运行,而不是告诉他们打开多个终端并在其中运行多个命令。
什么是最好/最正确/最优雅的方式去做这件事?
我正在为一个开源框架创建一个示例项目。为了让我的演示运行,它的一些依赖关系必须在其他端口上运行本地服务器。什么是启动多个本地node.js服务器的正确方法?
我宁愿给他们提供一个命令来运行,而不是告诉他们打开多个终端并在其中运行多个命令。
什么是最好/最正确/最优雅的方式去做这件事?
这是我如何完成这两个Web服务器。你应该可以玩更多的&
和fg
以获得更多的服务器。
的package.json:
{
"scripts": {
"start": "node node_modules/something/server.js & node server.js && fg
}
}
因此,用户只需运行npm install
然后npm start
在一个终端和ctrl-c
同时杀死运行两个服务器。
击穿:
node node_modules/something/server.js &
运行该服务器在后台
node server.js &&
运行我的服务器在前台
fg
移动最近转到后台壳放到前台
另外值得注意的是,你会想确保每个配置都在不同的端口上运行。在大多数情况下,节点服务器需要一个PORT环境变量来做到这一点。 – Paul
使用concurrently NPM包。
concurrently "node server.js" "node client.js"
这允许你写一气呵成用干净的输出多个命令。他们不只是节点服务器。你可以组合任何bash命令。
与package.json结合使用,您可以将所有这些内容放在单个脚本中,就像您想要的那样。 – nkprince007
Docker对我来说听起来像是一个理想的解决方案,但另一方面,如果用户不熟悉它,它会增加额外的一层复杂性。 –
如果您需要对底层服务进行控制,您可以考虑运行一个主进程并使用'child_process.fork'生成剩余的服务器和进程。我喜欢这种方法,因为它允许我监视和管理进程,并整合控制台输出和IPC。 – Thebluefish