【发布时间】:2016-07-12 09:55:08
【问题描述】:
我不知道我是否会在这里发疯,但我正在做一些非常基本的事情,通常是微不足道的,但我已经坚持了一段时间了。
我收到来自客户的消息,如下所示:
socket.on('request_username', function(messageFromClient) {
if(messageFromClient == undefined) {
Logger.logError("messageFromClient was undefined in socket_api.js");
return;
}
// Parse the message into Json, might not be needed.
// Logs: "{\"username\":\"test\"}"
console.log(messageFromClient);
try {
messageFromClient = JSON.parse(messageFromClient);
//Logs: {"username":"test"}
console.log(messageFromClient);
} catch(err) {
console.log("Error parsing json from request_username. Mesage is %s", err);
return;
}
// All undefined.
console.log(messageFromClient['"username"']);
console.log(messageFromClient["username"]);
console.log(messageFromClient['username']);
// msg == undefined incase the parse failed.
if(messageFromClient == undefined || messageFromClient.username == undefined) {
Logger.logError("messageFromClient.username was undefined in socket_api.js");
return;
}
var usernameRequested = messageFromClient.username;
现在我在日志中得到了这个
"{\"username\":\"test\"}"
{"username":"test"}
Log Error: messageFromClient.username was undefined in socket_api.js
我不知道我做错了什么..
【问题讨论】:
-
如果你使用 ES6,你应该使用 lambdas。我怀疑那些转义的斜线是你的问题。当您将
messageFromClient['"username"']作为键时,您正在寻找messageFromClient.username -
我也试过传递
{username:"test"},但它坏了。我仍然得到同样的错误 -
所以您尝试了
messageFromClient = { username : "test" };,但它仍然未定义? -
那行得通,所以解析有问题?
-
发送代码在哪里,以便我们可以准确地看到您发送消息的方式/内容? socket.io 自动序列化到/从 JSON,所以你不需要自己做。事实上,如果你这样做,它可能会搞砸。
标签: json node.js socket.io ecmascript-6