Nodejs express 4 如何自动重启?
Nodejs express 4 如何自动重启?
express 4以前的版本都是通过 npm app.js来运行环境,但是4.0的却用了npm start来代替,导致很多自动重启插件都无法使用,请问各位大神有没有可代替的方法?
Nodejs express 4 如何自动重启?
在Express 4及更高版本中,启动应用的方式发生了变化,通常使用 npm start
而不是 npm run app.js
。这导致了一些自动重启工具无法直接工作。不过,有几种方法可以实现自动重启功能,特别是在开发环境中。
使用 nodemon
nodemon
是一个非常方便的工具,它可以监视文件的变化并自动重启Node.js应用。安装 nodemon
非常简单:
npm install nodemon --save-dev
安装完成后,你可以在 package.json
文件中修改 start
脚本,使其使用 nodemon
启动应用:
{
"scripts": {
"start": "nodemon ./bin/www"
}
}
这里假设你的入口文件是 bin/www
。如果你使用的是 app.js
或其他文件,只需相应地更改路径即可。
示例代码
假设你的项目结构如下:
my-express-app/
├── bin/
│ └── www
├── package.json
└── ...
bin/www
文件内容如下:
#!/usr/bin/env node
/**
* Module dependencies.
*/
var app = require('../app');
var debug = require('debug')('my-express-app:server');
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);
}
这样配置后,你可以通过运行以下命令启动应用,并且在文件发生变化时自动重启:
npm start
通过这种方式,你可以轻松地在开发过程中自动重启你的Express应用。
你试试npm app.js
再说吧
…没试过会问嘛我~~~~
在app.js里面添加,app.listen(3000);然后使用supervisor app.js,当然你的npm install -g supervisor了
刚接触Express,以前写EmberJS用过Grunt的Watch功能,现在也写了一个Grunt的Watch来自动重启Express
node ./bin/www
其实就是node app.js
啊
我一般用node-dev,有修改就restart,支持coffee
要实现 Node.js 和 Express 4 应用程序的自动重启,可以使用 nodemon
工具。nodemon
是一个非常方便的工具,它可以在文件发生变化时自动重启 Node.js 应用程序。以下是如何配置和使用 nodemon
的步骤:
-
安装 nodemon: 首先需要全局安装或局部安装
nodemon
。推荐局部安装以便于项目管理。# 全局安装 npm install -g nodemon # 局部安装 npm install --save-dev nodemon
-
修改启动脚本: 如果使用
nodemon
进行本地安装,则可以在package.json
中添加一个启动脚本,例如:{ "scripts": { "start": "node app.js", "dev": "nodemon app.js" } }
然后可以使用
npm run dev
命令来启动应用程序,这样当文件发生变化时,nodemon
会自动重启应用。 -
运行应用: 使用命令
npm run dev
启动应用。现在当你对代码进行更改时,nodemon
会检测到这些变化并自动重启你的应用。
示例代码
假设有一个简单的 Express 应用程序 app.js
:
// app.js
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello World!');
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
在 package.json
文件中添加启动脚本:
{
"name": "example-app",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"start": "node app.js",
"dev": "nodemon app.js"
},
"dependencies": {
"express": "^4.17.1"
},
"devDependencies": {
"nodemon": "^2.0.15"
},
"keywords": [],
"author": "",
"license": "ISC"
}
然后运行:
npm run dev
以上就是如何使用 nodemon
实现 Node.js 和 Express 4 应用的自动重启。