2015-01-09 2 views
1

Насколько я знаю, некоторые модули node.js полагаются на поддержку родных OS-библиотек, например node-imagimagick.Могут ли модули Nodejs переноситься в разных дистрибутивах Linux?

Но этот вопрос меня беспокоит некоторое время.

Скажите в одном Linux (например, Ubuntu) У меня есть приложение nodejs со всеми зависимостями, загруженными через npm install, может ли приложение nodejs вместе с зависимостью просто копироваться в другую ОС (разное распределение Linux, например, Redhat) и выполняются плавно, предполагая, что последний требует собственных библиотек.

Будет ли проблема совместимости?

Я думаю, что реальные вопросы есть то, что делает npm install do? он создает собственный двоичный код конкретной ОС или просто загружает библиотеки javascript.

+0

'npm install' извлекает модули из [npmjs.org] (http://npmjs.org), поскольку они публикуются там авторами модулей. Поэтому вы не можете сделать общее утверждение обо всех модулях. – laggingreflex

ответ

0

Как и пример imagemagick, некоторые модули npm могут иметь зависимости, внешние по отношению к приложению. Например, модуль npm ZeroMQ не будет содержать двоичный файл ZeroMQ (или не должен).

Если вам нужна полная переносимость между дистрибутивами Linux, вы можете использовать контейнеры Docker. Например, у вас может быть ваш Dockerfile, удовлетворяющий всем необходимым требованиям (например, установка ZeroMQ), а затем ваше приложение-узел запускается внутри этого контейнера. Таким образом, вы можете быть уверены, что все модули npm, которые вы используете, будут работать, поскольку они работали над вашим дистрибутивом linux.

+0

Спасибо. На самом деле мы используем контейнер докеров, у нас есть Dockerfile и enpm, а также npm. Но тем не менее, мне любопытно, являются ли узловые_модули переносимыми, если у целевого env установлены бинарные депо? –

+0

Тогда ответ будет отрицательным, это не так. Как упоминал laggingreflex, модули npm публикуются произвольными разработчиками и могут включать сторонних разработчиков бинарные зависимости, которые не были предварительно установлены во всех дистрибутивах linux. – orcaman

+0

Итак, npm install делает что-то вроде 'make'? Не могли бы вы назвать один пример? –