本文作者:问几许

Upervisor 守护你的 Node.js 进程

问几许 5年前 ( 2018-03-30 ) 1218 抢沙发
Upervisor 守护你的 Node.js 进程摘要: 在初上手Node.js开发的时候,我们要启动一个服务,使用的是 node 命令:node myapp然而,node告诉我们,服务端的js代码只有在no...

在初上手Node.js开发的时候,我们要启动一个服务,使用的是 node 命令:

node myapp

然而,node告诉我们,服务端的js代码只有在node第一次引用,才会重新加载;如果node已经加载了某个文件,即使我们对它进行了修改, node也不会重新加载这个文件。

那么,在开发过程中,要如何才能像PHP一样,修改某个文件后,直接刷新网页就能看到效果呢?

方法有很多,比如使用 pm2forever 等来管理,比如使用今天要介绍的 supervisor

然而,node告诉我们,服务端的js代码只有在node第一次引用,才会重新加载;如果 node 已经加载了某个文件,即使我们对它进行了修改, node也不会重新加载这个文件。

那么,在开发过程中,要如何才能像PHP一样,修改某个文件后,直接刷新网页就能看到效果呢?

方法有很多,比如使用 pm2forever 等来管理,比如使用今天要介绍的 supervisor

安装

npm install -g supervisor

这里需要特别说明的是, -g 意味着安装到全局,所以Linux和Mac系统在安装时,要加 sudo

sudo npm install -g supervisor

在这种安装方式下,supervisor将被安装到默认的全局文件夹中;如果你不希望这样,可以修改全局路径为当前路径:

npm config set prefix <你的路径>

使用

最常用、最快捷的方式,就是直接进入你的网站根目录,执行:

supervisor myapp

这里要说明的一点是,不论你的网站服务启动文件在什么位置,你必须在根目录启动它。

举个例子,Express4.0中,启动文件位于 ./bin/www 中,则我们启动时,必须在 ./ 中执行:

supervisor bin/www

不能进入 bin 目录执行: supervisor www。这样虽然有可能也能启动,但这么做相当于把 bin 目录当作了服务的根目录了,一旦有涉及到文件目录的操作,一定会出错的。

另外,执行完这个命令后,我们的网站服务就已经启动了;不过,需要注意的是,这种方式启动的服务,是默认监控所有文件、文件夹的变化的;一旦有变化,服务就会重启(这个是node特性造成的

而不能进入 bin 目录执行: supervisor www。这样虽然有可能也能启动,但这么做相当于把 bin 目录当作了服务的根目录了,一旦有涉及到文件目录的操作,一定会出错的。

另外,执行完这个命令后,我们的网站服务就已经启动了;不过,需要注意的是,这种方式启动的服务,是默认监控所有文件、文件夹的变化的;一旦有变化,服务就会重启,这个是node特性造成的。


文章版权及转载声明

作者:问几许本文地址:https://wenjixu.com/blog/29.html发布于 5年前 ( 2018-03-30 )
文章转载或复制请以超链接形式并注明出处问几许

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享

发表评论

快捷回复:

评论列表 (暂无评论,1218人围观)参与讨论

还没有评论,来说两句吧...