关于我如何在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全局变量的线索。


当前回答

节点开发工作得很好。NPM安装node-dev

当服务器重新加载时,它甚至会给出桌面通知,并在消息中给出成功或错误。

在命令行启动你的应用程序:

node-dev app.js

其他回答

节点开发工作得很好。NPM安装node-dev

当服务器重新加载时,它甚至会给出桌面通知,并在消息中给出成功或错误。

在命令行启动你的应用程序:

node-dev app.js

你可以通过浏览器刷新来实现。您的节点应用程序自动重启,您的结果页面在浏览器也自动刷新。缺点是你必须把js片段生成的页面。下面是工作示例的回购。

const http = require('http');
const hostname = 'localhost';
const port = 3000;

const server = http.createServer((req, res) => {
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/html; charset=UTF-8');
    res.write('Simple refresh!');
    res.write(`<script src=${process.env.BROWSER_REFRESH_URL}></script>`);
    res.end();
})

server.listen(port, hostname, () => {
    console.log(`Server running at http://${hostname}:${port}/`);

    if (process.send) {
        process.send({ event: 'online', url: `http://${hostname}:${port}/` })
    }

});

不需要使用恶魔或其他类似的工具。只需使用IDE的功能。

可能最好的一个是IntelliJ WebStorm,具有热重载功能(自动服务器和浏览器重载)的node.js。

长期以来,Nodemon一直是重新启动服务器进行文件更改的首选。现在在Node.js 19中,他们引入了一个——watch标志,它做同样的[实验]。文档

node --watch index.js

对于使用Vagrant和PHPStorm的人来说,文件监视器是一种更快的方法

禁用文件的即时同步,这样就可以只在保存时运行该命令,然后为*.js文件和工作目录创建一个作用域并添加此命令 SSH -c "/var/www/gadelkareem.com/forever.sh restart"

forever.sh在哪里

#!/bin/bash

cd /var/www/gadelkareem.com/ && forever $1 -l /var/www/gadelkareem.com/.tmp/log/forever.log -a app.js