创建自执行 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 似乎是在进程退出后执行,所以它只是保持活动状态。