2017-08-15 54 views
0

我試圖在node.js中構建一些lambda,並且使用TypeORM和MySql。我已經安裝了所有必需的節點模塊,但是當我部署lambda(通過無服務器)並對其進行測試時,我遇到如下錯誤。 使用gulp構建和打包.zip。從測試拉姆達Node.js Lambda - 在MySql中使用TypeORM

輸出日誌:

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 

咕嘟咕嘟文件調用來自有無數一飲而盡任務AWS-λ-打字稿模塊的功能。

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

awsLambdaTypescript.registerBuildGulpTasks(gulp, __dirname); 

gulp將.zip打包在dist文件夾中,然後我複製到部署>開發,然後無服務器部署。

感謝您的幫助!

回答

0

您的包裝過程很可能有問題。我會檢查以下項目:

  1. 檢查您的package.json如果mysql在那裏。
  2. 檢查.serverless目錄中的zip文件,看它是否包含您的node_modules。
  3. 下載您上傳的lambda包,並再次檢查node_modules是否存在。
+0

感謝您的回覆,檢查和雙重檢查,但仍然有相同的錯誤。 – urang18

+0

@ urang18您驗證了'node_modules'位於zip文件的根目錄中,並且mysql模塊文件正如預期的那樣在那裏? –

+0

@Michael - sqlbot可以確認。我認爲它與TypeORM DriverPackage有關? – urang18