Использование модуля node bignum в потоке node-red

Я пытаюсь использовать модуль узла bignum в функции в потоке с красным узлом. Я установил модуль node в ту же папку, что и settings.js. Я отредактировал settings.js, чтобы включить

functionGlobalContext: {
   bignum:require('bignum')
},

и моя функция выглядит так

var bignum = context.global.bignum;

var b = bignum('782910138827292261791972728324982')
    .sub('182373273283402171237474774728373')
    .div(8)

msg.payload = b;

return msg;

Почему-то возвращает только это

[msg.payload] : object
{}

person cmdln    schedule 30.06.2015    source источник


Ответы (1)


Bignum передается как msg.payload, он просто неправильно отображается в панели отладки.

Это можно проверить с помощью следующего потока

[{"id":"4559ab0b.848204","type":"function","name":"","func":"var bignum = context.global.bignum;\n\nvar b = bignum('782910138827292261791972728324982')\n    .sub('182373273283402171237474774728373')\n    .div(8);\n\nmsg.payload = b;\n\nconsole.log(\"%j\", msg.payload);\nconsole.log(\"%j\", b);\nconsole.log(b);\nconsole.log(\"%j\", msg);\n\nreturn msg;","outputs":1,"noerr":0,"x":413,"y":186,"z":"6dffe97f.085fd8","wires":[["152e806f.249de8"]]},{"id":"28153711.bd78f","type":"inject","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":203,"y":140,"z":"6dffe97f.085fd8","wires":[["4559ab0b.848204"]]},{"id":"62001fd9.03c0c8","type":"debug","name":"","active":true,"console":"false","complete":"false","x":712,"y":191,"z":"6dffe97f.085fd8","wires":[]},{"id":"152e806f.249de8","type":"function","name":"","func":"console.log(\"2\");\nconsole.log(msg.payload);\nreturn msg;","outputs":1,"noerr":0,"x":543,"y":256,"z":"6dffe97f.085fd8","wires":[["62001fd9.03c0c8"]]}]

Я бы открыл вопрос, чтобы посмотреть на это здесь


ОБНОВИТЬ

Скорее всего, это связано с тем, что bignum не реализует метод toString, поэтому Node-RED не знает, как отображать вывод. Лучший способ исправить это, вероятно, поднять проблему с bignum, а не с Node-RED.


ОБНОВЛЕНИЕ 2

В выпуске Node-RED самая актуальная информация

https://github.com/node-red/node-red/issues/690

person hardillb    schedule 30.06.2015
comment
Спасибо за помощь в ведении журнала консоли. Это работает, если вы измените msg.payload на message.payload = b.toString(); - person cmdln; 30.06.2015