关于我如何在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

你不能使用NPM中的恶魔。 如果你正在使用Express生成器,那么你可以在你的项目文件夹中使用这个命令:

nodemon npm start

或使用调试模式

DEBUG=yourapp:* nodemon npm start

你也可以直接运行

nodemon your-app-file.js

希望这对你有所帮助。

在谷歌搜索中,第一个出现的是Nodemon,它似乎奏效了:

npm install nodemon -g
cd whatever_dir_holds_my_app
nodemon app.js

最近(2009年)在node.js邮件列表中有一个关于这个主题的帖子。简短的回答是否定的,目前还不可能自动重载所需的文件,但一些人已经开发了添加此功能的补丁。

您可以通过Node-Supervisor进行安装

npm install supervisor

参见http://github.com/isaacs/node-supervisor