设定:
具有Internet连接的VM,其中将执行npm install
以安装所有应用程序依赖项。结果将是一个包含应用程序及其依赖项的文件夹,位于node_modules
。
应用程序模块之间是fi:mongoose
,在安装时使用node-gyp
编译本机BSON扩展。
应用程序文件夹被复制到另一个没有Internet连接的虚拟机,它完全正常运行,但编译后的扩展程序不起作用,但其.js
后备功能不起作用。
问题:
如何在没有Internet连接的情况下重新安装/重新编译/重新生成新VM上的所有应用程序模块?
答案 0 :(得分:15)
这正是npm rebuild命令的作用。在将应用程序目录复制到新VM后,只需在应用程序目录中运行npm rebuild
,将重新编译任何二进制加载项以匹配当前的CPU体系结构和节点版本。如果副本之前的初始npm install
完全成功,则第二个VM上的npm rebuild
将不需要下载任何内容。只需确保第二个VM具有合理关闭的节点版本和适当的低级编译器,库等(例如,build-essential和python on debian)。