在初上手Node.js开发的时候,我们要启动一个服务,使用的是 node 命令:
node myapp
然而,node告诉我们,服务端的js代码只有在node第一次引用,才会重新加载;如果node已经加载了某个文件,即使我们对它进行了修改, node也不会重新加载这个文件。
那么,在开发过程中,要如何才能像PHP一样,修改某个文件后,直接刷新网页就能看到效果呢?
方法有很多,比如使用 pm2
、forever
等来管理,比如使用今天要介绍的 supervisor
。
然而,node告诉我们,服务端的js代码只有在node第一次引用,才会重新加载;如果 node
已经加载了某个文件,即使我们对它进行了修改, node也不会重新加载这个文件。
那么,在开发过程中,要如何才能像PHP一样,修改某个文件后,直接刷新网页就能看到效果呢?
方法有很多,比如使用 pm2、forever 等来管理,比如使用今天要介绍的 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特性造成的。
还没有评论,来说两句吧...