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