在 Express 4 里 Nodejs Supervisor 如何使用?
在 Express 4 里 Nodejs Supervisor 如何使用?
在 Express 4 版本里启动 app 的方法也变了:DEBUG=my-application ./bin/www
,好像修改 Jade 能够实时更新,更改 JS 的就不能,实时更新显示。Supervisor 改如何用了?
在 Express 4 里 Node.js Supervisor 如何使用?
在 Express 4 中,启动应用的方式有所变化,通常我们会通过 DEBUG
环境变量来启用调试模式。例如:
DEBUG=my-application ./bin/www
如果你想要在修改 JavaScript 文件时实现自动重启服务,可以使用 supervisor
这个工具。supervisor
是一个简单的 Node.js 工具,用于监控文件系统的变化并自动重启 Node.js 应用程序。
安装 Supervisor
首先,你需要全局安装 supervisor
。你可以使用以下命令进行安装:
npm install -g supervisor
使用 Supervisor 启动应用
安装完成后,你可以使用 supervisor
来启动你的 Express 应用。假设你的入口文件是 bin/www
,你可以使用以下命令:
supervisor bin/www
这将启动你的 Express 应用,并且会监听任何文件系统的变更。如果检测到文件变化(包括 .js
文件),它会自动重启应用程序。
示例
假设你的项目结构如下:
my-application/
├── node_modules/
├── bin/
│ └── www
├── package.json
└── app.js
bin/www
文件可能包含类似如下的代码:
#!/usr/bin/env node
/**
* Module dependencies.
*/
var app = require('../app');
var debug = require('debug')('my-application');
var http = require('http');
/**
* Get port from environment and store in Express.
*/
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
/**
* Create HTTP server.
*/
var server = http.createServer(app);
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
/**
* Normalize a port into a number, string, or false.
*/
function normalizePort(val) {
var port = parseInt(val, 10);
if (isNaN(port)) {
// named pipe
return val;
}
if (port >= 0) {
// port number
return port;
}
return false;
}
/**
* Event listener for HTTP server "error" event.
*/
function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}
var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;
// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}
/**
* Event listener for HTTP server "listening" event.
*/
function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}
在这个例子中,supervisor
将会监听 bin/www
文件以及所有被引用的其他文件(如 app.js
)的变化,并在检测到变化时自动重启服务器。
通过这种方式,你可以在开发过程中更高效地调试和测试你的 Express 应用。
大小写给楼主改掉了…
Jade 应该是每次请求都会读代码?.. JS 是应用启动时候就加载进去的没可以用 node-dev
来自动刷新 app.
Supervisor 是什么? 后端应该管理工具 Supervisor 还是 Isaacs 的 supervisor
模块?
你好,我是想说supervisor,搞错大小写了,express 3 的时候使用supervisor app.js ,这样每次更改代码都不用重启服务了吗?
supervisor ./bin/www
ok,之前这样子试过,因为不像以前的提示。直到访问地址才回像往常一样在控制台有输出。谢谢!
这样确实可以,谢谢! PS: cnodejs.org 无法很快看出哪个是楼主回的,一顿好找。
在window环境下Express 4不是内部命令,3.5就可以,为什么啊
Express 4不是内部命令:看这里。http://jingyan.baidu.com/album/922554468a3466851648f419.html
在 Express 4 中使用 Supervisor 来实现热重载(即更改 JavaScript 文件后自动重启服务)可以极大地提升开发效率。下面将简要介绍如何配置和使用 Supervisor,并提供相应的示例代码。
安装 Supervisor
首先,确保已经安装了 Supervisor。如果尚未安装,可以通过 npm 全局安装:
npm install -g supervisor
使用 Supervisor 启动应用
Supervisor 可以用来监视你的应用程序,并在任何文件发生变化时自动重启服务器。使用它来启动 Express 应用程序,只需在命令行中替换 node
为 supervisor
。
假设你的主入口文件名为 app.js
或者如题目所述的 bin/www
,你可以这样启动应用:
supervisor bin/www
这里,bin/www
是 Express 4 默认的启动脚本。
示例目录结构
为了更好地理解,这里提供一个简单的项目结构示例:
my-app/
├── bin/
│ └── www
├── package.json
└── app.js
修改 Supervisor 配置
Supervisor 提供了一些选项来定制行为。例如,如果你想要更详细的日志输出,可以使用 -i
选项来指定忽略的文件模式,或者使用 -w
来指定哪些文件应该被监视:
supervisor -w 'bin/**,app.js' -i node_modules bin/www
上述命令表示监视 bin
目录下的所有文件以及 app.js
,并且不监视 node_modules
目录。
总结
通过使用 Supervisor,你可以轻松地实现 Node.js 应用的热重载功能,从而提高开发效率。只需要全局安装 Supervisor 并用其替代 node
命令来启动你的 Express 应用即可。根据需要调整 Supervisor 的参数以满足特定需求。