2017-09-14 119 views
1

我在使用node-mysql2測試項目時發生了問題,反應,續集和笑話。這個問題只發生在測試過程中。在jest.js中未識別的編碼

Encoding not recognized: 'cesu8' (searched as: 'cesu8') 
    at Object.getCodec (project/node_modules/mysql2/node_modules/iconv-lite/lib/index.js:106:23) 
    at Object.getDecoder (project/node_modules/mysql2/node_modules/iconv-lite/lib/index.js:122:23) 
    at Object.<anonymous>.exports.decode (project/node_modules/mysql2/lib/parsers/string.js:9:23) 
    at Packet.Object.<anonymous>.Packet.readNullTerminatedString (project/node_modules/mysql2/lib/packets/packet.js:373:23) 
    at Function.Object.<anonymous>.Handshake.fromPacket (project/node_modules/mysql2/lib/packets/handshake.js:18:31) 
    at ClientHandshake.Object.<anonymous>.ClientHandshake.handshakeInit (project/node_modules/mysql2/lib/commands/client_handshake.js:98:38) 
    at ClientHandshake.Object.<anonymous>.Command.execute (project/node_modules/mysql2/lib/commands/command.js:40:20) 
    at Connection.Object.<anonymous>.Connection.handlePacket (project/node_modules/mysql2/lib/connection.js:515:28) 
    at PacketParser.onPacket (project/node_modules/mysql2/lib/connection.js:94:16) 
    at PacketParser.executeStart (project/node_modules/mysql2/lib/packet_parser.js:77:14) 
    at Socket.<anonymous> (project/node_modules/mysql2/lib/connection.js:102:29) 

回答

1

這是mysql2做動態懶惰需要編碼和jest無法處理這個問題。看看一些變通網友建議here

這個片段添加到setupTestFrameworkScriptFile

require('mysql2/node_modules/iconv-lite').encodingExists('foo'); 

或在某個地方,早在你的代碼:

import iconv from 'iconv-lite'; 
import encodings from 'iconv-lite/encodings'; 
iconv.encodings = encodings;