问题描述
我的单元测试有问题。 我正在使用 TypeORM 和 MysqL 和 Jest 进行单元测试。
这是执行'npm run test'时的日志
ReferenceError:在 Jest 环境被拆除后,您正尝试 import
一个文件。
at Object.getCodec (node_modules/MysqL2/node_modules/iconv-lite/lib/index.js:63:27)
at Object.getDecoder (node_modules/MysqL2/node_modules/iconv-lite/lib/index.js:125:23)
at Object.<anonymous>.exports.decode (node_modules/MysqL2/lib/parsers/string.js:10:25)
at Packet.readNullTerminatedString (node_modules/MysqL2/lib/packets/packet.js:398:25)
at Function.fromPacket (node_modules/MysqL2/lib/packets/handshake.js:62:33)
/home/juan/projects/panel-uifra/node_modules/MysqL2/node_modules/iconv-lite/lib/index.js:104
throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')");
^
Error: Encoding not recognized: 'cesu8' (searched as: 'cesu8')
at Object.getCodec (/home/juan/projects/panel-uifra/node_modules/MysqL2/node_modules/iconv-lite/lib/index.js:104:23)
at Object.getDecoder (/home/juan/projects/panel-uifra/node_modules/MysqL2/node_modules/iconv-lite/lib/index.js:125:23)
at Object.<anonymous>.exports.decode (/home/juan/projects/panel-uifra/node_modules/MysqL2/lib/parsers/string.js:10:25)
at Packet.readNullTerminatedString (/home/juan/projects/panel-uifra/node_modules/MysqL2/lib/packets/packet.js:398:25)
at Function.fromPacket (/home/juan/projects/panel-uifra/node_modules/MysqL2/lib/packets/handshake.js:62:33)
at ClientHandshake.handshakeInit (/home/juan/projects/panel-uifra/node_modules/MysqL2/lib/commands/client_handshake.js:93:40)
at ClientHandshake.execute (/home/juan/projects/panel-uifra/node_modules/MysqL2/lib/commands/command.js:39:22)
at PoolConnection.handlePacket (/home/juan/projects/panel-uifra/node_modules/MysqL2/lib/connection.js:425:32)
at PacketParser.onPacket (/home/juan/projects/panel-uifra/node_modules/MysqL2/lib/connection.js:75:12)
at PacketParser.executeStart (/home/juan/projects/panel-uifra/node_modules/MysqL2/lib/packet_parser.js:75:16)
奇怪的是,这个错误只发生在测试中,当我运行服务器时,连接成功。
我发现的一个解决方案是将编码器显式设置为 iconv-lite,如下所示:
import iconv from 'iconv-lite';
import encodings from 'iconv-lite/encodings';
iconv.encodings = encodings;
但这里的问题是打字稿抓住了我,因为编码道具没有在类型声明中定义:
类型上不存在属性“编码”。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)