我有一个在浏览器中运行的测试套件(使用 QUnit,尽管这并不重要)。测试套件需要在特定端口上运行本地服务器。运行测试目前涉及几个步骤:
node test/server
- 切换到选择的浏览器
- 打开本地主机:3000
我希望有一个命令来启动服务器然后运行open localhost:3000
。理想情况下,节点进程将保留在前台,以便可以使用 ^C 将其终止。我对子 shell 不太了解,所以我不确定这是否可行。
答案1
如果我理解正确的话,你想要:
- 启动 node.js 服务
- 启动浏览器
- 在浏览器中访问该服务
首先在给定的延迟后启动浏览器。接下来,启动服务并让其在前台运行。双 & 符号强制“next”命令等待“first”命令以代码 0 退出,而单个 & 符号表示“在后台启动”。我们可以利用这一点为服务争取一些时间进行预热,然后再让浏览器尝试访问它。
#!/bin/sh
awhile=3
sleep $awhile && firefox http://localhost:3000/ &
node netservice.js
如果有帮助的话,您可以将其视为foo && bar &
一个异步调用,以保证 foo 在调用 bar 之前完成。
答案2
说明书上说打开您选择的浏览器,如 Web 浏览器,即 Firefox、Chrome、嗯……Internet Explorer。
步骤 2 和 3 根本不是命令行。步骤 3 是将“localhost:3000”粘贴到浏览器的地址栏中。您可以让节点在 shell 中运行,或者附加“&”,这将启动该过程并返回到提示符。