serverless framework, typescript, nodejs and mysql - Error: Received packet in the wrong sequence

微笑、不失礼 提交于 2020-01-14 02:33:13

问题


When invoking a function with using mysqljs/mysql as installed with

npm install --save-dev mysql

I get the following error and trace.

{
"errorMessage": "RequestId: be7822cc-8e1d-11e8-83b8-a1383ecfa1de Process exited before completing request"
}
--------------------------------------------------------------------
START RequestId: be7822cc-8e1d-11e8-83b8-a1383ecfa1de Version: $LATEST
2018-07-22 19:11:46.308 (-07:00)        be7822cc-8e1d-11e8-83b8-a1383ecfa1de        Error: Received packet in the wrong sequence.
at N._parsePacket (/var/task/controllers/webpack:/node_modules/mysql/lib/protocol/Protocol.js:270:1)
at N.write (/var/task/controllers/webpack:/node_modules/mysql/lib/protocol/Parser.js:76:1)
at N.write (/var/task/controllers/webpack:/node_modules/mysql/lib/protocol/Protocol.js:38:1)
at Socket.<anonymous> (/var/task/controllers/webpack:/node_modules/mysql/lib/Connection.js:91:1)
at Socket.<anonymous> (/var/task/controllers/webpack:/node_modules/mysql/lib/Connection.js:502:1)
at emitOne (events.js:116:13)
at Socket.emit (events.js:211:7)
at addChunk (_stream_readable.js:263:12)
at readableAddChunk (_stream_readable.js:250:11)
at Socket.Readable.push (_stream_readable.js:208:10)
END RequestId: be7822cc-8e1d-11e8-83b8-a1383ecfa1de
REPORT RequestId: be7822cc-8e1d-11e8-83b8-a1383ecfa1de  Duration: 2514.52 ms       Billed Duration: 2600 ms        Memory Size: 128 MB     Max Memory Used: 46 MB

RequestId: be7822cc-8e1d-11e8-83b8-a1383ecfa1de Process exited before completing request

My example code is

import { APIGatewayEvent, Callback, Context, Handler } from 'aws-lambda';
import {createConnection, Connection} from 'mysql';

export const index: Handler = (event: APIGatewayEvent, context: Context, cb: Callback) => {
  let connection = createConnection({
    host: process.env["DB_RO_HOST"],
    user: process.env["DB_RO_USERNAME"],
    password: process.env["DB_RO_PASSWORD"],
    database: process.env["DB_RO_NAME"]
  });

  connection.connect();

  const response = {
    statusCode: 200,
    body: JSON.stringify("{\"test\":\"test\"}"),
  };

  cb(null, response);
}

The code errors when I attempt to call the connect() method.

My research has resulted has resulted in several people saying to turn mangle off in Uglify in older versions of Uglify and Webpack. I am however running a modern webpack.

My package.json

{
  "name": "aws-nodejs-typescript",
  "version": "1.0.0",
  "description": "Serverless webpack example using Typescript",
  "main": "handler.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "dependencies": {
    "source-map-support": "^0.5.0"
  },
  "devDependencies": {
    "@types/aws-lambda": "8.10.1",
    "@types/mysql": "^2.15.5",
    "@types/node": "^8.10.21",
    "mysql": "^2.16.0",
    "serverless-webpack": "^5.1.1",
    "ts-loader": "^4.2.0",
    "typescript": "^2.8.1",
    "webpack": "^4.5.0"
  },
  "author": "The serverless webpack authors (https://github.com/elastic-coders/serverless-webpack)",
  "license": "MIT"
}

来源:https://stackoverflow.com/questions/51470960/serverless-framework-typescript-nodejs-and-mysql-error-received-packet-in-t

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!