debug 노드를 두지 않고 플로우를 debug하는 방법
5476 단어 node-red-desktopnode-red
본 기사에서는, Node-RED Desktop Ver.1.0 에 추가된 올 디버그 기능을,
Node-RED Desktop 이외에도 사용하는 방법을 설명합니다.
이전 쓰기: 표준 디버깅 기능의 과제
Node-RED에서 플로우를 디버깅하려면 debug 노드를 플로우에 두어야 합니다.
그러나 이것에는 다음과 같은 문제가 있습니다.
디버그 노드가 많을수록 흐름의 이해가 쉬워집니다
올 디버그 기능이란?
debug 노드를 두지 않고 debug가 할 수 있는 기능입니다.
구체적으로는
debug 노드의 유무에 관계없이,
모든 노드의 출력을 통과하는 msg(그림의 빨간색 원을 통과하는 msg)가 디버그 창으로 출력될 수 있습니다.
이것은 모든 노드에 debug 노드를 매달린 것과 같은 상태입니다.
즉, 올 디버그 기능을 사용하면 더 이상 개별적으로 debug 노드를 두지 않아도 됩니다.
기능 추가는 단 22줄에
Node-RED 시작 파일 (
node_modules/node-red/red.js
)에 22 줄을 추가하기 만하면됩니다. ( ver.1.0.3
에서 해설하고 있습니다)아래에서는 절차를 설명합니다.
0. node-red 설치
$ mkdir sagyou
$ cd sagyou
$ npm install node-red
1.
red.js
파일을 red2.js
에 복사하고 red2.js
를 편집합니다.$ cp node_modules/node-red/red.js node_modules/node-red/red2.js
$ vi node_modules/node-red/red2.js
2. 차이가 다음과 같이 편집합니다.
$ diff -c node_modules/node-red/red*.js
*** node_modules/node-red/red.js 2019-11-02 10:44:27.536891600 +0900
--- node_modules/node-red/red2.js 2019-12-01 09:37:25.653174800 +0900
***************
*** 24,29 ****
--- 24,30 ----
var nopt = require("nopt");
var path = require("path");
var fs = require("fs-extra");
+ var Node = require('@node-red/runtime/lib/nodes/Node')
var RED = require("./lib/red.js");
var server;
***************
*** 198,205 ****
--- 199,228 ----
settings.userDir = parsedArgs.userDir;
}
+ function allDebugOut() {
+ Node.prototype._send = Node.prototype.send
+ Node.prototype.send = function(msg) {
+ Node.prototype._send.call(this, msg)
+ var _data = {
+ id: this.id,
+ z: this.z,
+ name: this.name,
+ topic: msg.topic,
+ msg: msg,
+ _path: msg._path
+ }
+ var data = RED.runtime.util.encodeObject(_data);
+ RED.runtime.events.emit("comms", {
+ topic: "debug",
+ data: data,
+ retain: false
+ })
+ }
+ }
+
try {
RED.init(server,settings);
+ allDebugOut();
} catch(err) {
if (err.code == "unsupported_version") {
console.log("Unsupported version of Node.js:",process.version);
$
이것으로 올 디버그 기능 추가가 완료되었습니다.
3. 올 디버그 기능을 사용하고 싶을 때는
red.js
대신 red2.js
를 사용하여 Node-RED를 시작합니다.$ node node_modules/node-red/red2.js
이제 Nod-RED의 깔끔하고 심플하고 알기 쉬운 흐름을 되찾을 수 있군요!
그럼, 즐거운 Node-RED 라이프를! !
결론
Node-RED-Desktop Ver.1.0 에서는, 이 올 디버그 기능을 메뉴의 ON/OFF 로 이용할 수 있습니다.
또, 작년의 어드벤트 캘린더에서 소개된 세로 흐름 을 사용할 수 있거나, ngrok나 node-generator가 통합되고 있어 편리한 툴로 완성되고 있다고 생각합니다.
흥미를 가진 분은, 꼭 인스톨 해 봐 주세요.
다운로드 는 여기에서 할 수 있습니다
Appendix
Reference
이 문제에 관하여(debug 노드를 두지 않고 플로우를 debug하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sakazuki/items/4f98fe3eb6710dfa4170텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)