javascript - 套接字 io 发射生成 'instanceof' 的右侧不是对象

标签 javascript sockets

我收到以下错误

C:\path\app\node_modules\winston\node_modules\cycle\cycle.js:62
                !(value instanceof String)) {
                        ^

TypeError: Right-hand side of 'instanceof' is not an object

在我的

 return io.to(socket.id).emit('friendsInvited', data);

线。 我在很多地方都有相同的代码,但错误只发生在这个代码块中......见下文:

       socket.on('inviteFriends', function(body) {
                let inviteesArr = body.split(',');
                let emailObjArray = validateInvitees(body)
                console.log("EmailObj Array: " + JSON.stringify(emailObjArray));

                if (emailObjArray.length === 0) {

                    data = {
                        code: String = '1',
                        msg: String = 'failmessage...'
                    };
   **<<FAILS HERE>>**   return io.to(socket.id).emit('friendsInvited', data);
                } else
                {
                 ...function(a,b,f(c){
                      if (x===0) {} else
                       {
    **<<WORKS HERE>>**   return io.to(socket.id).emit('friendsInvited', data);
                       }
              }}
.......

data 始终是相同的 data.code 和 data.msg。除了此代码块之外,此构造可以在许多其他地方使用。我想我错过了一些非常基本的东西,但看不到它。我以为我遇到了范围问题,但我不这么认为。 编辑:这里有更多堆栈跟踪......

TypeError: Right-hand side of 'instanceof' is not an object
    at derez (C:\path\app\node_modules\cycle\cycle.js:62:25)
    at Object.decycle (C:\path\app\node_modules\cycle\cycle.js:101:6)
    at Object.exports.clone (C:\path\app\node_modules\winston\lib\winston\common.js:97:22)
    at Object.exports.log (C:\path\app\node_modules\winston\lib\winston\common.js:149:19)
    at exports.Console.Console.log (C:\\path\app\node_modules\winston\lib\winston\transports\console.js:99:19)
    at exports.Console.Transport.logException (C:\path\app\node_modules\winston\lib\winston\transports\transport.js:134:8)
    at logAndWait (C:\path\app\node_modules\winston\lib\winston\logger.js:649:15)
    at C\path\app\\node_modules\winston\node_modules\async\lib\async.js:157:13
    at _each (C:\path\app\node_modules\winston\node_modules\async\lib\async.js:57:9)
    at Object.async.each (C:\path\app\node_modules\winston\node_modules\async\lib\async.js:156:9)
    at exports.Logger.Logger._uncaughtException (C:\path\app\node_modules\winston\lib\winston\logger.js:672:9)
    at emitOne (events.js:116:13)
    at process.emit (events.js:211:7)
    at process._fatalException (bootstrap_node.js:378:26)
npm ERR! code ELIFECYCLE
npm ERR! errno 7
....

最佳答案

罪魁祸首就在这里:

data = {
  code: String = '1',
  msg: String = 'failmessage...'
};

您基本上覆盖了内置的 String 构造函数。

示例:

const x = String = 'something';

x 将等于 'something',但这是从 String = 'something' 赋值返回的结果,实际上它更改了构建的- 在String构造函数中。现在,当您尝试使用 variableName instanceof String 时,String 将是一个原始值,但 instanceof 只能与构造函数一起用作右侧 - 以及运行时引发的错误。

关于javascript - 套接字 io 发射生成 'instanceof' 的右侧不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51071660/

相关文章:

c - 使用c进行套接字编程时连接到远程服务器时出错

javascript - 如何将二进制数据从 C++ 发送到 Javascript

C套接字内存溢出

javascript - 使用 jQuery 将事件绑定(bind)到特定 ID 内的类

Javascript:正确设置文本区域

sockets - "sin"在 sin_addr、sin_family 等中是什么意思?

C套接字编程未输入端口

javascript - 是否可以在 pebble js 中创建一个 Watchface?

javascript - 将两个 json 部分组合成一个 json 对象

javascript - 使用 Node js将mysql结果解析为变量