Setup:
A VM with an Internet connection where
npm installwill be executed to install all the app dependencies. The result will be a folder with the app and its dependencies innode_modules.Between the app modules is fi:
mongoose, which on installation time usesnode-gypto compile a native BSON extension.The app folder is copied to another VM without an Internet conection and it is fully functional, but then the compiled extensions don't work but its
.jsfallbacks does.
Question:
How can I reinstall/recompile/regenerate all the app modules on the new VM without an Internet conection?
This is precisely what the npm rebuild command does. Just run
npm rebuildinside your app directory after it is copied over to the new VM and any binary add-ons will be recompiled to match the current CPU architecture and node version. If the initialnpm installbefore the copy was completely successful, thenpm rebuildon the second VM will not need to download anything. Just make sure the second VM has a reasonably-close version of node and the appropriate lower level compilers, libraries, etc (build-essential and python on debian, for example).