关于我如何在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 );
在app.js文件中,我有:
var file = require('./file');
this.app = function(req, res) {
file.serveFile( req, res, 'file.js');
}
但这也不能工作-我在process.compile()语句中得到一个错误,说'require'没有定义。Process.compile正在计算app.js,但没有关于node.js全局变量的线索。
这里有一个在Windows中使用的低技术方法。把它放在一个名为server .bat的批处理文件中:
@echo off
:serve
start /wait node.exe %*
goto :serve
现在,不是从cmd shell运行node app.js,而是运行serve app.js。
这将打开一个运行服务器的新shell窗口。批处理文件将阻塞(因为/wait),直到您关闭shell窗口,此时原始的cmd shell将询问“终止批处理作业(Y/N)?”如果您回答“N”,则服务器将重新启动。
每次要重新启动服务器时,关闭服务器窗口并在cmd shell中回答“N”。
没有一个恶魔是伟大的。我只是为调试和监视选项添加了更多参数。
package.json
"scripts": {
"dev": "cross-env NODE_ENV=development nodemon --watch server --inspect ./server/server.js"
}
执行命令:nodemon——watch server——inspect ./server/server.js
而:
当更改server文件夹(包括子文件夹)中的.js, .mjs, .coffee, .litcoffee和.json文件时重新启动应用程序。
——inspect开启远程调试。
./server/server.js入口。
然后添加以下配置以启动。json (VS Code)和开始调试随时。
{
"type": "node",
"request": "attach",
"name": "Attach",
"protocol": "inspector",
"port": 9229
}
注意,最好将nodemon安装为项目的开发依赖项。所以你的团队成员不需要安装它或记住命令参数,他们只需要npm运行dev并开始黑客。
查看更多关于nodemon文档的信息:https://github.com/remy/nodemon#monitoring-multiple-directories