Javascript Nodejs模块是否可以跨不同的Linux发行版移植?

Javascript Nodejs模块是否可以跨不同的Linux发行版移植?,javascript,linux,node.js,npm,Javascript,Linux,Node.js,Npm,据我所知,一些node.js模块依赖于本机OS库支持,比如node imagimagick 但这个问题困扰了我一段时间 假设在一个Linux(例如Ubuntu)中,我有一个nodejs应用程序,所有依赖项都是通过npm install下载的,那么nodejs应用程序和依赖项可以简单地复制到另一个操作系统(不同的Linux发行版,例如Redhat)并顺利运行,假设后者需要本机库 是否存在任何兼容性问题 我认为真正的问题是npm安装做什么?它是构建特定于操作系统的二进制代码还是只下载javascri

据我所知,一些node.js模块依赖于本机OS库支持,比如node imagimagick

但这个问题困扰了我一段时间

假设在一个Linux(例如Ubuntu)中,我有一个nodejs应用程序,所有依赖项都是通过
npm install
下载的,那么nodejs应用程序和依赖项可以简单地复制到另一个操作系统(不同的Linux发行版,例如Redhat)并顺利运行,假设后者需要本机库

是否存在任何兼容性问题


我认为真正的问题是
npm安装
做什么?它是构建特定于操作系统的二进制代码还是只下载javascript库。

与imagemagick示例一样,某些npm模块可能具有应用程序外部的依赖项。例如,ZeroMQ npm模块不包含ZeroMQ二进制文件(或者不应该包含)


<>如果你想在Linux发行版之间实现完全的可移植性,你可以考虑使用DOCKER容器。例如,您可以让Dockerfile满足所有先决条件(例如安装ZeroMQ),然后让节点应用程序在该容器中运行。通过这种方式,您可以确保您使用的所有npm模块都能像在linux发行版上一样工作

npm install
从模块作者发布的模块中检索模块。所以你不能对所有的模块都做一个概括的陈述。谢谢。实际上,我们使用的是docker容器,我们有Dockerfile do env配置,还有npm安装。但我还是“我很好奇,如果目标环境安装了二进制DEP,节点_模块是否可移植?那么答案是否定的,它们不是。”。正如LaggingReflect所提到的,npm模块是由任意开发人员发布的,并且可能包括未预装在所有linux发行版上的第三方二进制依赖项?你能举一个例子吗?可能与make有相似之处,这取决于Makefile的功能。但我觉得这更像是一种习惯。举个例子。考虑这个包:如果将NPM模块包含在PasaG.JSON文件中的依赖项,则应用程序可能在您的机器上运行良好(如果您以前安装了ZMQ),但当您的开发人员从Git获取代码时,开发人员以前没有安装ZMQ,当他/她运行NPM安装时,它们将遇到错误。(无论是在安装npm时,还是在运行应用程序时,情况更糟)。正如我在问题和回答中提到的,服务器已安装了所需的所有第三方库,复制到此服务器的node_模块是否正常工作?