NodeJS - использовать удаленный модуль?

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

т.е. Я хотел бы сделать что-то в этом направлении (что не работает как есть):

var remoteMod = require('http:// ... ссылка на мой удаленный модуль ... ');

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

РЕДАКТИРОВАТЬ:

У меня есть как локальные, так и удаленные серверы, поэтому меня не волнуют проблемы безопасности.

Если я просто собираюсь получить содержимое файла, я бы хотел сделать это синхронно. Использование require('http').get может получить файл, но работа из обратного вызова не оптимальна для того, что я пытаюсь сделать. Я бы действительно искал что-то похожее на функцию fopen в php - если это вообще возможно с помощью node.


person jtrussell    schedule 18.04.2011    source источник


Ответы (2)


Вы можете получить удаленный файл только через http http://nodejs.org/docs/v0.4.6/api/http.html#http.get

require('http').get({host: 'www.example.com', path: '/mystaticfile.txt'}, function(res) {
 //do something
});
person Emmerman    schedule 18.04.2011
comment
Спасибо, вы случайно не знаете, как я могу получить содержимое файла синхронно? - person jtrussell; 18.04.2011
comment
Через http? Я так не думаю. Вместо этого вы можете поместить остальную часть своего кода в функцию закрытия. - person Emmerman; 19.04.2011
comment
попробуйте это вместо встроенного модуля http. Я не могу ручаться за это, но похоже, что вам нужно https://github.com/dhruvbird/http-sync Кроме того, вам, вероятно, лучше делать это асинхронно. - person CharlesTWall3; 06.05.2014

Запуск кода, загруженного с другого сервера, очень опасен. Что, если кто-то сможет изменить этот код? Этот человек сможет запускать любой код, который он хочет, на вашем сервере.

person Van Coding    schedule 18.04.2011
comment
Спасибо - я понимаю опасности здесь, как это бывает, хотя я также владею удаленным сервером. - person jtrussell; 18.04.2011
comment
Возможно, вам следует смонтировать папку, содержащую ваш модуль, через sftp в вашу файловую систему ;) Это было бы намного более безопасно и удобно! - person Van Coding; 18.04.2011
comment
Я должен дать вам немного больше информации о том, что я пытаюсь сделать... Я хочу получить некоторые данные, хранящиеся в удаленной БД, но я также хочу, чтобы эти данные обрабатывались скриптами (не js), которые уже жить на этом сервере (т.е. я не хочу иметь две копии этих скриптов на разных языках, которые необходимо поддерживать). Было бы неплохо, если бы я мог сделать веб-запрос к удаленному серверу, который загружает некоторые данные, обрабатывает их, затем создает и отправляет обратно мой файл пользовательского модуля. Просто смонтировать файл локально не очень поможет, так как мне нужно, чтобы удаленный сервер сначала создавал его для каждого веб-запроса. - person jtrussell; 18.04.2011
comment
Хорошо, я думаю, что синхронизация будет невозможна (как упоминалось в вашем комментарии к ответу Эммермана). - person Van Coding; 18.04.2011