如何在不重新启动的情况下在 Express 上重新加载一个文件?

How to reload one file on Express without restarting?

我正在使用 fs.appendFileSync(...) 将新路由附加到路由 JavaScript 文件,但是,由于 Node.Js 需要重新启动以重新加载文件,附加的无法访问路由。我只需要重新加载正在应用的文件。

var express = require('express');
var router = express.Router();

module.exports = router;

/* New Routes are appended here.
Example:

router.get('/bobby', function(req, res, next){

});
 */

我已经在 Stack Overflow 上搜索了在不重启服务器的情况下重新加载文件的方法,但是所有的问题都只涉及开发的自动重新加载,而不是真实的东西。我已经看到了关于 Nodemon 和 Node-Supervisor 的建议,但那些人说它只是为了开发。

这可能是一个愚蠢的问题,但我不知道如何解决。

感谢您的阅读。

您可以使用 require-reload 来做到这一点。您应该有一个文件,您可以在其中导入 router.js 模块,并在其中添加新代码,它应该如下所示:

var reload = require('require-reload')(require),
var router = reload('router.js');

每次添加新代码时,您应该这样做:

try {
    router = reload('router.js');
} catch (e) {
    console.error("Failed to reload router.js! Error: ", e);
}

express-route-refresh 模块也可以派上用场。事实上,它在内部也使用 require-reload.