使用node-gyp进行本机绑定的交叉编译节点模块

Jos*_*unt 20 cross-compiling amazon-web-services node.js node-gyp aws-lambda

我正在使用AWS Lambda,它涉及创建我的node.js脚本的存档,包括该node_modules文件夹并将其上传到他们的基础架构以运行.

这种方法很好,除了涉及具有本机绑定的节点模块(使用node-gyp).由于绑定已在我的本地计算机(OS X)上进行编译和项目存档,因此它与AWS(Amazon Linux)服务器不兼容.

如何交叉编译/安装节点模块(特别是node-sqlite3),这样当我将其上传到另一个服务器时,它会运行吗?

Rob*_*ann 9

虽然不是解决问题的方法,但一个非常简单的解决方法是简单地在Linux机器上编译本机插件.

对于你的特殊情况,我会使用Vagrant.Vagrant可以创建虚拟机并在几秒钟内完成配置.

  1. 查找类似于亚马逊的Linux发行版的操作系统映像(Fedora,CentOS,其他yum用作包管理器的 - 请参阅Wiki)
  2. 使用一个简单的配置脚本,当Vagrant在机器启动时运行时,它将运行npm install(可选地,它也可能在删除node_modules文件夹之前确保干净安装)
  3. 为了更加舒适,脚本还可以创建用于部署的zip文件
  4. 安装完成后,脚本将关闭VM以避免不必要的系统资源消耗
  5. 部署!

如果链接库不在目标机器上的相同位置,可能需要进行一些调整,但一般来说,这似乎是最好和最快的解决方案.