gpt4 book ai didi

node.js - "Error: Received packet in the wrong sequence."连接无服务器极光时

转载 作者:行者123 更新时间:2023-12-03 12:13:23 25 4
gpt4 key购买 nike

我正在实现一个 Web 应用程序,它调用 lambda 函数从数据库中获取数据。
我选择了Serverless Aurora并写了一个代码,但我得到了异常"Error: Received packet in the wrong sequence."在查询方法中。

我用谷歌搜索了这个问题,但几乎所有问题都太旧了。
有文章说是browisify的问题但我不使用它。
我正在使用带有 typescript 的无服务器框架。

const mysql = require('serverless-mysql')({
config: {
host: process.env.DB_HOST,
database: process.env.DB_NAME,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD
}
});

export async function query(sql: string, param?: Array<string>): Promise<any> {
const results = await mysql.query(sql).catch(e => {
console.log(e); // Error: Received packet in the wrong sequence
throw new Error(e);
});

await mysql.end();
return results;
}

以下也不起作用

export async function query(sql: string, param?: Array<string>): Promise<any> {
const connQueryPromisified = util
.promisify(connection.query)
.bind(connection);
const result = await connQueryPromisified(sql, param)
.then(row => {
console.log(row);
return row;
})
.catch(err => {
console.log(err); // getting Error: Received packet in the wrong sequence
throw err;
});
return result;
}

我也尝试使用 RDS DATA 服务,但在我所在的地区不可用。
export async function query(sql: string, param?: Array<string>): Promise<any> {
const params: aws.RDSDataService.Types.ExecuteSqlRequest = {
awsSecretStoreArn: '***',
dbClusterOrInstanceArn: '***',
database: '***',
schema: '***',
sqlStatements: sql
};
console.log(params);
try {
const rdsService = new aws.RDSDataService({
apiVersion: '2018-08-01',
region: 'ap-northeast-1'
});
return rdsService
.executeSql(params)
.promise()
.then(d => {
return d;
})
.catch(e => {
throw new Error(e);
});
} catch (err) {
console.log(err); // nothing to say
throw new Error(err);
}
}

这是我的配置: webpack.config.js
const path = require('path');
const slsw = require('serverless-webpack');

module.exports = {
mode: slsw.lib.webpack.isLocal ? 'development' : 'production',
entry: slsw.lib.entries,
devtool: 'source-map',
resolve: {
extensions: ['.js', '.jsx', '.json', '.ts', '.tsx'],
},
output: {
libraryTarget: 'commonjs',
path: path.join(__dirname, '.webpack'),
filename: '[name].js',
},
target: 'node',
module: {
rules: [
// all files with a `.ts` or `.tsx` extension will be handled by `ts-loader`
{ test: /\.tsx?$/, loader: 'ts-loader' },
],
},
};

tsconfig.json
{
"compilerOptions": {
"lib": [
"es2017"
],
"moduleResolution": "node",
"sourceMap": true,
"target": "es2017",
"outDir": "lib"
},
"exclude": [
"node_modules"
]
}


我只想查询从无服务器 Aurora 获取记录。
有谁能够帮助我?

最佳答案

发生这种情况的原因是因为 Webpack(在生产模式下)正在将您的代码通过最小化器,而 mysql serverless-mysql 的模块正在使用与最小化不兼容。

您可以在此处查看问题:https://github.com/mysqljs/mysql/issues/1655 .对于依赖函数名称来进行代码构建的 Node 模块来说,这是一个很常见的问题,因为丑陋器/缩小器试图通过将函数名称更改为单个字母来混淆/节省空间。

最简单的解决方法是通过添加以下内容来关闭 webpack 配置中的最小化:

  optimization: {
minimize: false
}

链接问题中有一些关于配置各种其他最小化插件(如 terser)以不破坏名称的讨论,这将使您在需要时获得最小化的一些好处。

关于node.js - "Error: Received packet in the wrong sequence."连接无服务器极光时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55988989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com