创建自执行的node.js服务器

时间:2017-03-23 16:06:40

标签: node.js windows bash cmd macos-sierra

我想创建一个执行命令的可执行bash文件 node app.js - 目标是拥有一个可在已安装节点的本地计算机上打开的可执行文件,并且可执行文件位于项目目录中(这是一个express.js应用程序)。

我正在尝试在mac上执行此操作,我编写了一个.command文件,使其可执行并添加了命令。 问题是,该过程立即关闭,因为终端似乎在最后一个命令后自动添加exit;。 我想在Windows机器上也这样做。

我不需要在可执行文件中使用整个应用程序,只需双击文件而不是打开终端并手动编写该简单命令。

知道如何实现这个目标吗?

6 个答案:

答案 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添加到最后一行。这将阻止命令提示符退出。