据我所知,某些node.js模块依赖于本机OS库支持,如node-imagimagick。
但这个问题困扰了我一段时间。
在一个Linux中说(例如Ubuntu)我有一个nodejs应用程序,通过npm install
下载了所有依赖项,nodejs app和依赖项可以简单地复制到另一个OS(不同的linux发行版) ,例如Redhat)并且运行顺利,假设后者需要本机库。
是否存在任何兼容性问题?
我认为真正的问题是npm install
做了什么?它是否构建了特定于操作系统的二进制代码,或者只是下载了javascript库。
答案 0 :(得分:0)
与imagemagick示例一样,某些npm模块可能具有应用程序外部的依赖项。例如,ZeroMQ npm模块不包含ZeroMQ二进制(或不应该)。
如果您希望Linux发行版之间完全可移植,可以考虑使用Docker容器。例如,您可以让您的Dockerfile满足所有先决条件(例如,安装ZeroMQ),然后让您的节点应用程序在该容器内运行。通过这种方式,您可以确保所使用的所有npm模块都可以在Linux发行版上运行。