У меня есть index.js, который формирует веб-уровень с помощью app.listen () после определения некоторых записей и запросов.В нем я установил watchr для просмотра другого файла .js в папке ./libs на предмет любых изменений в нем.После внесения изменений я хочу, чтобы оно распространяло обновление из функции, которую оно экспортирует, в веб-службы index.js без перезагрузки.
В index.js ...
var bodyParser = require('body-parser');
const express = require('express');
var app = express();
var myObjFile = require('./libs/myObjFile.js');
var watchr = require('watchr');
var myWatchPath = process.cwd() + '\\libs\\myObjFile.js';
function myListener (changeTyle, fullPath, currentStat, previousStat) {
try {
switch(changeType) {
case 'update':
delete require.cache[require.resolve('./libs/myObjFile.js');
//for (const path in require.cache) {
// if (path.endsWith('myObjFile.js') {
// delete require.cache[require.resolve('./libs/myObjFile.js');
// }
//}
//myObjFile = {};
myObjFile = require('./libs/myObjFile.js');
}
}
catch (err) {
console.log('err watcher: ' + err.message);
}
function next (err) {
return err.message;
}
var stalker = watchr.open(myWatchPath , myListener, next);
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "origin, X-Requested-With, Content-Type, Accept");
next();
});
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json( {
extended: try
}));
app.get('/getStuff/', function (req, res) {
var thisObj = new myObjFile.objCreate('my type', myUUID);
thisObj.consoleTest();
})
app.listen(1234);
Вы можетесм. некоторые вещи, которые я попытался закомментировать в середине функции watchr.
//Now inside myObjFile.js
exports.objCreate = function (type, uuid) {
...
function consoleTest() {
console.log('test123');
}
...
return {
...
consoleTest: consoleTest,
...
};
Я ожидаю, что после запуска файла index.js node.js с запуском npm яможет сначала вызвать веб-сервис get () и посмотреть печать 'test123' на консоли.Затем я хочу изменить 'test123' на 'testABC' и сохранить файл, затем, когда я снова вызываю get (), я ожидаю увидеть печать 'testABC' на консоли.Пока я продолжаю видеть «test123», пока не перезагружу сервер, которого я хотел бы избежать, если это возможно.
Есть ли способ перезагрузить require () во время выполнения?