SAM Node.js hello world应用缺少axios模块
我对Node.js和SAM都是新手 除了使用Node.js之外,我正在遵循AWS在线快速入门指南。具体来说,我运行了以下命令: 版本:SAM Node.js hello world应用缺少axios模块,node.js,amazon-web-services,aws-lambda,serverless-application-model,Node.js,Amazon Web Services,Aws Lambda,Serverless Application Model,我对Node.js和SAM都是新手 除了使用Node.js之外,我正在遵循AWS在线快速入门指南。具体来说,我运行了以下命令: 版本: ▶ sam --version SAM CLI, version 0.10.0 ▶ node --version v8.15.0 建造: ▶ sam init --runtime nodejs ▶ cd sam-app/ ▶ sam
▶ sam --version
SAM CLI, version 0.10.0
▶ node --version
v8.15.0
建造:
▶ sam init --runtime nodejs
▶ cd sam-app/
▶ sam build
▶ sam package \
--template-file template.yaml \
--output-template-file packaged.yaml \
--s3-bucket $s3_bucket
▶ sam deploy \
--template-file packaged.yaml \
--stack-name sam-app \
--capabilities CAPABILITY_IAM
这一切都很好地部署了堆栈和函数,但当我测试它时,它被破坏了,因为axios模块不存在:
{
"errorMessage": "Cannot find module 'axios'",
"errorType": "Error",
"stackTrace": [
"Function.Module._load (module.js:474:25)",
"Module.require (module.js:596:17)",
"require (internal/module.js:11:18)",
"Object.<anonymous> (/var/task/app.js:2:15)",
"Module._compile (module.js:652:30)",
"Object.Module._extensions..js (module.js:663:10)",
"Module.load (module.js:565:32)",
"tryModuleLoad (module.js:505:12)",
"Function.Module._load (module.js:497:3)"
]
}
但不是在Lambda:
我已经看到了其他SO的答案,但它没有帮助,因为我认为SAM应该打包所有依赖项
有人知道怎么回事吗?
sam build
将使用节点模块创建sam应用程序人工制品。但是,当您使用--template file template.yaml
执行sam package
时,上载到s3的人工制品将不包括应用程序依赖项,因为它根据定义的模板文件打包应用程序,而不是根据sam build
生成的人工制品
您应该删除sam包
命令的--template file
参数。只需执行以下操作:
sam build
sam package --s3-bucket <your-bucket> --output-template-file packaged.yaml
sam deploy \
--template-file packaged.yaml \
--stack-name sam-app \
--capabilities CAPABILITY_IAM
sam构建
sam包--s3 bucket--输出模板文件packaged.yaml
sam部署\
--模板文件packaged.yaml\
--堆栈名称sam应用程序\
--能力
现在,应该使用package.json中定义的依赖项创建Lambda。sam build
将使用node\u模块创建sam应用程序工件。但是,当您使用--template file template.yaml
执行sam package
时,上载到s3的人工制品将不包括应用程序依赖项,因为它根据定义的模板文件打包应用程序,而不是根据sam build
生成的人工制品
您应该删除sam包
命令的--template file
参数。只需执行以下操作:
sam build
sam package --s3-bucket <your-bucket> --output-template-file packaged.yaml
sam deploy \
--template-file packaged.yaml \
--stack-name sam-app \
--capabilities CAPABILITY_IAM
sam构建
sam包--s3 bucket--输出模板文件packaged.yaml
sam部署\
--模板文件packaged.yaml\
--堆栈名称sam应用程序\
--能力
现在应该使用package.json中定义的依赖项创建Lambda。除此之外,这里的问题是为Node.js生成的文档包含一个输入错误,指定了我使用的sam package
命令,如AWS sam CLI源代码修订版中所示
我提出了一个pull请求来修复它。除此之外,这里的问题是Node.js生成的文档包含一个输入错误,指定了我使用的sam包
命令,如AWS sam CLI源代码修订版所示
我提出了一个请求来修复它。这是在某处记录的还是sam build已损坏?很抱歉,我可能没有正确解释它。我现在已经更新了我的原始答案。这是记录在案的地方还是sam build被破坏了?很抱歉,我可能没有正确解释它。我现在已经更新了我的原始答案。