如何在Node.js中自动重新加载文件?

2022-08-29 23:01:59

关于如何在Node.js中实现文件的自动重新加载的任何想法?我厌倦了每次更改文件时重新启动服务器。显然,如果已经需要Node.js'函数,则不会重新加载文件,因此我需要执行如下操作:require()

var sys     = require('sys'), 
    http    = require('http'),
    posix   = require('posix'),
    json    = require('./json');

var script_name = '/some/path/to/app.js';
this.app = require('./app').app;

process.watchFile(script_name, function(curr, prev){
    posix.cat(script_name).addCallback(function(content){
        process.compile( content, script_name );
    });
});

http.createServer(this.app).listen( 8080 );

应用程序中.js文件我有:

var file = require('./file');
this.app = function(req, res) { 
    file.serveFile( req, res, 'file.js');  
}

但这也不起作用 - 我在语句中收到一个错误,说“require”没有定义。 正在逃避应用程序.js,但对节点.js全局没有任何线索。process.compile()process.compile


答案 1

一个好的,最新的替代品是nodemonsupervisor

监控节点.js应用程序中的任何更改并自动重新启动服务器 - 非常适合开发

要与不带节点的版本一起使用(不建议使用 v8.1 及更低版本):nodemonnpx

$ npm install nodemon -g
$ nodemon app.js

或者与捆绑在 (v8.2+ ) 中的 Node 版本一起使用:nodemonnpx

$ npm install nodemon
$ npx nodemon app.js

或者作为 devDependency in package.json 中的 npm 脚本:

"scripts": {
  "start": "nodemon app.js"
},
"devDependencies": {
  "nodemon": "..."
}

答案 2

节点主管真棒

用于在保存旧节点版本时重新启动(不建议):

npm install supervisor -g
supervisor app.js

用于在 保存 节点版本 附带的节点版本时重新启动:npx

npm install supervisor
npx supervisor app.js

或直接在 npm 脚本中调用:supervisor

"scripts": {
  "start": "supervisor app.js"
}