我想创建一个执行命令的可执行bash文件
node app.js
- 目标是拥有一个可在已安装节点的本地计算机上打开的可执行文件,并且可执行文件位于项目目录中(这是一个express.js应用程序)。
我正在尝试在mac上执行此操作,我编写了一个.command文件,使其可执行并添加了命令。
问题是,该过程立即关闭,因为终端似乎在最后一个命令后自动添加exit;
。
我想在Windows机器上也这样做。
我不需要在可执行文件中使用整个应用程序,只需双击文件而不是打开终端并手动编写该简单命令。
知道如何实现这个目标吗?
答案 0 :(得分:2)
forever应该这样做。
除节点外,请永久安装:
npm i -g forever
将命令更改为:
forever app.js
服务器应在进程关闭后连续运行。
要停止服务器,可以使用此命令使用另一个.command文件:
forever stopall
答案 1 :(得分:1)
.command在User文件夹中运行,因此您必须输入项目文件夹才能运行节点脚本
cd /something/project
node app.js
它在mac上为我工作。
windows我觉得你只需要把它变成一个.bat它应该可以工作
您可以使用npm start而不是node app.js
答案 2 :(得分:0)
hotel可能是一个很好的通用解决方案。
使用命令hotel add
注册后,您可以从简单的Web界面启动和停止服务器。
它也是一个更好的跨平台解决方案,因为否则使用可执行文件意味着您需要:
.bat
for Windows .sh
for Linux .command
适用于Mac 我最喜欢的功能是代理支持。例如,一旦我注册了我的节点项目my-express-app
:
$ cd my-express-app
$ hotel add "node app.js"
我可以打开我的浏览器,然后唠叨到http://my-express-app.dev来启动服务器。
答案 3 :(得分:0)
在文件中写下以下命令
node app.js
并以.bat扩展名保存。
注意:首先尝试正常执行app.js,因为如果它出现任何错误,那么shell命令将停止并关闭终端。
OR
创建名为runCommand.bat的.bat文件,在其中写入:
node app.js
cmd /K runcommand.bat
保存并双击执行。如果发现错误或服务器崩溃,它将继续重试,直到您没有修复它。否则会继续运行。
要获得所需的结果,您可以使用FOREVER或PM2来管理流程。
答案 4 :(得分:0)
我不担心建议的解决方案是否有效或足以使用 - 但我已设法使用以下方法解决此问题:
reldir=`dirname $0`
cd $reldir
npm start
@Gregory最接近解决方案 -
首先 - 找到当前目录路径并转到它。
next - 与命令node app.js
不同,调用npm start
似乎在进程退出后执行,因此它只是保持活动状态。
答案 5 :(得分:-1)
您必须将node server.js
保存为.bat文件,但需要将pause
添加到最后一行。这将阻止命令提示符退出。