当前位置: 首页 > 知识库问答 >
问题:

如何停止该节点的应用程序.js表示“npm start”

郭浩穰
2023-03-14

您使用Express v4. x构建node.js应用程序,然后通过npm开始启动您的应用程序。我的问题是如何停止应用程序?有npm停止吗?

执行npm停止时编辑以包含错误

/home/nodetest2# npm stop

> nodetest2@0.0.1 stop /home/nodetest2
> pkill -s SIGINT nodetest2

pkill: invalid argument for option 's' -- SIGINT

npm ERR! nodetest2@0.0.1 stop: `pkill -s SIGINT nodetest2`
npm ERR! Exit status 2

共有3个答案

赵宏达
2023-03-14

在MAC OS X(/BSD):您可以尝试使用lsof(列出打开的文件)命令

$ sudo lsof -nPi -sTCP:LISTEN

所以

$ kill -9 3320
许高峻
2023-03-14

此处的所有其他解决方案都依赖于操作系统。任何操作系统的独立解决方案都使用 socket.io,如下所示。

包.json 有两个脚本:

"scripts": {
  "start": "node server.js",
  "stop": "node server.stop.js"
}
const express = require('express');
const app = express();
const server = http.createServer(app);
server.listen(80, () => {
  console.log('HTTP server listening on port 80');
});

// Now for the socket.io stuff - NOTE THIS IS A RESTFUL HTTP SERVER
// We are only using socket.io here to respond to the npmStop signal
// To support IPC (Inter Process Communication) AKA RPC (Remote P.C.)

const io = require('socket.io')(server);
io.on('connection', (socketServer) => {
  socketServer.on('npmStop', () => {
    process.exit(0);
  });
});
const io = require('socket.io-client');
const socketClient = io.connect('http://localhost'); // Specify port if your express server is not using default port 80

socketClient.on('connect', () => {
  socketClient.emit('npmStop');
  setTimeout(() => {
    process.exit(0);
  }, 1000);
});

< code>npm start(照常启动服务器)

npm停止(现在将停止您正在运行的服务器)

上面的代码还没有经过测试(它是我的代码的一个精简版本,我的代码确实可以工作),但希望它可以正常工作。不管怎样,它都提供了如果你想使用套接字的一般方向。io停止服务器。

仇高韵
2023-03-14

是的,npm也提供了停止脚本:

npm 帮助 npm 脚本

预停止、停止、后停止:由 npm stop 命令运行。

在您的包中设置上述内容之一。json,然后使用<code>npm stop</code>

npm帮助npm停止

如果你在应用程序中设置,你可以让这变得非常简单.js,

进程标题 = 我的应用程序;

然后,在scripts.json中,

"scripts": {
    "start": "app.js"
    , "stop": "pkill --signal SIGINT myApp"
}

也就是说,如果这是我,我会使用pm2或基于git推送自动处理的东西。

 类似资料:
  • 我有一个简单的TCP服务器,它监听一个端口。 我从节点server.js开始,然后在Mac上用Ctrl Z关闭它。当我试图再次运行它与我得到这个错误消息: 我是否以错误的方式关闭程序?我怎样才能防止这种情况发生?

  • 问题内容: 您使用express v4.x构建node.js应用,然后通过 npm start 启动您的应用。我的问题是如何停止该应用程序?有 npm停 吗? *执行 *npm stop 时 编辑* 以包含错误 * 问题答案: 是的,npm也提供了停止脚本: prestop,stop,poststop:由npm stop命令运行。 在package.json中设置以上内容之一,然后使用 如果您设置

  • 我有一个简单的控制台应用程序,有时需要执行图形操作,对于那些我使用JavaFx框架(有一些功能,我需要像css样式的文本)我只是生成一些形状和文本到一个隐藏的场景,然后保存在文件中仅此而已, 我知道要使用JavaFx,我必须将图形操作传递给JavaFx线程,但是当一切都完成后,我必须关闭应用程序(几个小时后),这个JavaFx线程仍然保持打开...我真的不想强行退出System.exit(),因为

  • 目前,我正面临一个技术决策,我个人无法找到解决方案。 我目前正在开发一个多租户数据库。 结构如下: 有一个核心数据库,用于保存特定租户的数据和关系 有多个租户数据库实例(通过核心数据库中的查询,可以确定我应该连接到哪个租户id) 每个租户都位于一个单独的数据库实例(位于单独的服务器上) 每个租户都有特定的数据,其他租户都不应访问这些数据 每个数据库最好是mySQL(但如果有更好的选择,我愿意接受建

  • 问题内容: 我想使用新配置重新启动elasticsearch节点。正常关闭节点的最佳方法是什么? 关闭进程是关闭服务器的最佳方法,还是我可以使用一些神奇的URL关闭节点? 问题答案: 更新的答案。 API已在elasticsearch 2.x中删除。 一些选项: 在您的终端(基本上是开发模式)中,只需键入“ Ctrl-C” 如果您以守护程序()的身份启动它,请找到PID并终止该进程:将彻底关闭El

  • 我的应用程序有一个选项,用户只能在系统托盘中运行,而不能在任务栏中运行。当我的应用程序由Delphi 6构建时,它运行良好。切换到Delphi XE2后,它不再工作。 我把它弄得一团糟,我让它适用于Windows 7,但是在Windows XP上运行时,我仍然有一个问题。应用程序正确地从任务栏中隐藏,并显示在系统托盘中。但是当我创建并显示任何附加表单时,图标会显示在Windows XP中。 如果用