2012-03-15 3 views
2

Есть ли способ изменить node.js во время его работы?Есть ли способ изменить node.js во время его работы?

Как редактировать javascript-файлы во время его работы, а затем он изменяется соответствующим образом во время его работы.

+0

Возможный дубликат http://stackoverflow.com/questions/6310722/refresh-node-js-script –

ответ

0

Нет, это невозможно. Когда вы запускаете сервер/приложение Node, он будет загружаться в текущие версии файлов. Если вы внесете изменения после запуска, это не будет известно. Вам придется убить приложение и перезапустить, чтобы эти изменения повлияли.

Есть некоторые утилиты, такие как node-dev, которые делают это за вас. Они отслеживают файловую систему для внесения изменений и перезапускают приложение по мере необходимости (наряду с некоторыми другими функциями, такими как уведомление о ворчании).

Я предпочитаю перезагружать приложение вручную. Таким образом, вы точно знаете, какая версия работает, и несколько раз можете сохранить изменения в файле, прежде чем принимать решение о повторном тестировании.

2

Да.

Вам придется загрузить файл через другой файл, который следит за сценариями изменений. Вероятно, вам понадобится код установки/разрыва, который запускается в скрипте всякий раз, когда он перезапускается.

var fs = require('fs'); 
var file = 'file.js'; 

var script; 
function loadScript() { 
    if (script) { 
    if (typeof script.teardown === 'function') { 
     script.teardown(); 
    } 
    delete require.cache[file]; 
    } 

    script = require(file); 
} 

fs.watch(file, function(event, filename) { 
    if (event !== 'change') return; 
    loadScript(); 
}); 

loadScript(); 

fs.watch API не 100% соответствует на разных платформах, и недоступна в некоторых ситуациях.

0

Это вполне возможно.

Просто не требуйте своих модулей в заголовке; вместо этого загрузите их, позвонив во время потребности.

Кроме того, вы также можете позвонить require.undef('./myModule'), чтобы вырезать существующие версии, прежде чем включать новый модуль. Вы можете сканировать файловую систему для любых новых имен модулей, если вам хочется сбросить новое поведение во время выполнения.

Я неоднократно реализовывал шаблон плагина с узлом, так что обновление подмодуля будет включать новые плагины, которые будут отобраны во время выполнения.

Наслаждайтесь.

0

Вы можете использовать nodemon.

nodemon будет следить за файлами в каталоге, в котором запускался nodemon, а при любых изменениях файлов nodemon автоматически перезапустит ваше приложение-приложение.

Идеальное решение для работы с узлом во время разработки.

Смежные вопросы