我正在爲一個開源框架創建一個示例項目。爲了讓我的演示運行,它的一些依賴關係必須在其他端口上運行本地服務器。什麼是啓動多個本地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