首页 文章

Node.js Lambda - 将TypeORM与MySql一起使用

提问于
浏览
0

我正在尝试在node.js中构建一些lambda,我正在使用TypeORM和MySql . 我已经安装了所有必需的节点模块但是当我部署lambda(通过无服务器)并测试它时,我得到如下错误 . 使用gulp构建和打包.zip .

测试lambda的日志输出:

START RequestId: 671bed10-81b0-11e7-af34-251688cfdd Version: $LATEST
2017-08-15T11:53:50.594Z    671bed10-81b0-11e7-af34-251688cfdd  
(node:1) UnhandledPromiseRejectionWarning: Unhandled promise rejection 
(rejection id: 2): DriverPackageNotInstalledError: Mysql package has 
not been found installed. Try to install it: npm install mysql --save
2017-08-15T11:53:50.596Z    671bed10-81b0-11e7-af34-251688cfdd  Method:  
"GET"
2017-08-15T11:53:50.596Z    671bed10-81b0-11e7-af34-251688cfdd  Started 
....
2017-08-15T11:53:50.596Z    671bed10-81b0-11e7-af34-251688cfdd  
Finished ....
2017-08-15T11:53:50.596Z    671bed10-81b0-11e7-af34-251688cfdd  
(node:1) PromiseRejectionHandledWarning: Promise rejection was handled 
asynchronously (rejection id: 2)
2017-08-15T11:53:50.597Z    671bed10-81b0-11e7-af34-251688cfddb2    
Console error:  { DriverPackageNotInstalledError: Mysql package has not 
been found installed. Try to install it: npm install mysql --save
at t.Error (native)
at new t (/var/task/index.js:1:48637)
at e.loadDependencies (/var/task/index.js:1:314938)
at new e (/var/task/index.js:1:311241)
at e.createDriver (/var/task/index.js:1:111709)
at e.create (/var/task/index.js:1:104246)
at e.<anonymous> (/var/task/index.js:1:110994)
at r (/var/task/index.js:1:103453)
at Object.next (/var/task/index.js:1:102788)
at /var/task/index.js:1:102697
name: 'DriverPackageNotInstalledError',
message: 'Mysql package has not been found installed. Try to install 
it: npm install mysql --save' }
END RequestId: 671bed10-81b0-11e7-af34-251688cfdd
REPORT RequestId: 671bed10-81b0-11e7-af34-251688cfdd    Duration: 8.71 
ms  Billed Duration: 100 ms     Memory Size: 1024 MB    Max Memory 
Used: 39 MB

我的研究让我相信它不会正确打包,因为它是一个原生模块 . 但我不确定 . 如果是这样的话,无论如何都要让本机节点模块与lambda一起工作?任何帮助将不胜感激,谢谢 .


编辑

文件夹结构:

deploy
-- dev
---- serverless.yml
---- PROJECT.zip
-- test
---- serverless.yml
---- PROJECT.zip
-- prod
---- serverless.yml
---- PROJECT.zip

node_modules
-- *
---- *

src
-- api
---- User
------ index.ts
-- data
---- User.ts
-- models
---- User.ts

gulpfile.js
index.ts
package.json
tsconfig.json
tslint.json

Gulp文件从aws-lambda-typescript模块调用一个函数,该模块具有许多gulp任务 .

const gulp = require('gulp');
const awsLambdaTypescript = require('aws-lambda-typescript');

awsLambdaTypescript.registerBuildGulpTasks(gulp, __dirname);

Gulp在.dip文件夹中打包.zip然后我复制到部署> dev然后无服务器部署 .

谢谢你的帮助!

1 回答

  • 0

    很可能你的包装过程出了问题 . 我会检查以下项目:

    • 如果 mysql 在那里,请检查 package.json .

    • 检查 .serverless 目录中的zip文件,看它是否包含node_modules .

    • 下载您上传的lambda软件包,并再次检查node_modules是否存在 .

相关问题