генерирование сокета io emit Правая часть instanceof не является объектом - PullRequest
0 голосов
/ 28 июня 2018

Я получаю следующую ошибку

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.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
....

1 Ответ

0 голосов
/ 28 июня 2018

Виновник лежит здесь:

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

Вы в основном переопределяете встроенный String конструктор.

Пример:

const x = String = 'something';

x будет равно 'something', но это результат, возвращаемый из присваивания String = 'something', которое фактически изменяет встроенный конструктор String. Теперь, когда вы попытаетесь использовать variableName instanceof String, String будет примитивным значением, но instanceof может использоваться только с функцией конструктора в качестве правой части - и, следовательно, с ошибкой, генерируемой во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...