如何在不重新启动的情况下在 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
.
我正在使用 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
.