【发布时间】:2020-12-26 18:50:15
【问题描述】:
对此感到非常困惑。我有一些服务器代码由于某种原因在我的测试中引发 UTF-8 错误,但在正常运行服务器时工作正常:
代码:
export default ({ projectId = PROJECT_ID, esHost = ES_HOST } = {}) => {
let app = express();
app.use(cors());
app.use(bodyParser.json({ limit: '50mb' }));
let http = Server(app);
let io = socketIO(http);
let server = {
app,
io,
http,
status: 'off',
listen(
port = PORT,
cb = () => {
rainbow(`⚡️ Listening on port ${port} ⚡️`);
},
) {
this.http.listen(port, () => {
main({ io, app, projectId, esHost, port });
this.status = 'on';
cb();
});
},
close(cb = () => {}) {
if (this.http) {
this.http.close(() => {
this.status = 'off';
cb();
});
} else {
throw '❗️ cannot close server that has not been started ❗️';
}
},
};
return server;
};
用法(完全一样,但开玩笑的测试 body-parser 不能正常工作):
import createServer from '../server'
let server = createServer()
server.listen(5050);
我正在使用邮递员,在测试之外发布回复:
{
"projects": [
{
"id": "test",
"active": true,
"timestamp": "2018-02-25T21:33:08.006Z"
},
{
"id": "TEST-PROJECT",
"active": true,
"timestamp": "2018-03-05T21:34:34.604Z"
},
{
"id": "asd",
"active": true,
"timestamp": "2018-03-06T23:29:55.348Z"
}
],
"total": 3
}
在 jest 测试服务器中出现意外的 post 响应:
错误
UnsupportedMediaTypeError: 不支持的字符集“UTF-8”
在 /Users/awilmer/Projects/arranger/node_modules/body-parser/lib/read.js:83:18
在 invokeCallback (/Users/awilmer /Projects/arranger/node_modules/raw-body/index.js:224:16)
在 _combinedTickCallback (internal/process/next_tick.js:131:7)
在 process._tickCallback (internal/process/next_tick .js:180:9)
【问题讨论】:
-
全部安装完毕,测试全部通过,您是否尝试删除 node_modules、
npm cache clean并重新安装所有内容? -
你用哪个操作系统来测试这个?
-
我正在运行 osx 10.12.6..nodejs 8.4。我将在另一台机器上尝试全新安装
-
@azium,我可以重现你的问题,这个问题只是在这里开玩笑。它不会发生在其他框架中。我现在正在寻找可能的解决方案
-
@azium,发布了解决方案。看看
标签: node.js express postman jestjs body-parser