无服务器框架:如何添加外部NPM软件包?

我的情况是,我在添加外部NPM软件包到我的无服务器框架项目(具体包是geopoint)有点麻烦。

我去了无服务器项目的根文件夹,并运行npm install geopoint --save 。 package.json更新了dependencies": { "geopoint": "^1.0.1" }并创build了node_modules文件夹。

我的文件夹结构如下所示:
根项目文件夹
-function
–geospatial
— handler.js
-node_modules
–geopoint

在我的函数/地理空间/处理程序.js我声明的geopoint模块:

  var geopoint = require('geopoint'); var geopoint = require('../../geopoint'); var geopoint = require('../../../geopoint'); 

lambda控制台返回错误:

  { "errorMessage": "Cannot find module '../../geopoint'", "errorType": "Error", "stackTrace": [] } 

如何正确地将外部NPM模块添加到无服务器框架项目?

我想你所经历的和我最近经历的是一样的。 我可以在我的应用程序根目录下安装npm包,但是没有任何东西会被部署到lambda。

我的理解是无服务器在每个组件目录(应用程序根目录下的子目录)下部署。 在你的情况下,在functions

我无法在无服务器的文档中find很多,但是我所做的是在我的functions文件夹下定义一个package.json文件,然后在该子目录中运行npm install。 然后在部署到lambda后,此目录下的node_modules也被部署了,这意味着我的function代码可能需要任何这些npm模块。

所以,你的文件夹结构现在应该是这样的:

 root-project-folder |-functions |--package.json |--node_modules |---geopoint |--geospatial |---handler.js |-package.json |-node_modules |--geopoint 

这样做的好处是你只能部署你的函数需要的npm依赖,而不需要那些无需服务器的部署资源。

希望这有助于 – 再一次,不确定这是最佳实践,正是我所做的,因为这没有logging在无服务器存储库或任何示例代码中find的任何地方。

对我来说,最好的解决scheme是无服务器插件:无服务器插件包括依赖关系

无服务器,插件,包括依赖性