@node-red/runtime 2.2.0 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/flows/util.js +6 -5
- package/lib/nodes/Node.js +41 -19
- package/package.json +3 -3
package/lib/flows/util.js
CHANGED
|
@@ -77,15 +77,16 @@ function createNode(flow,config) {
|
|
|
77
77
|
if (typeof nodeTypeConstructor === "function") {
|
|
78
78
|
var conf = clone(config);
|
|
79
79
|
delete conf.credentials;
|
|
80
|
-
for (var p in conf) {
|
|
81
|
-
if (conf.hasOwnProperty(p)) {
|
|
82
|
-
mapEnvVarProperties(conf,p,flow,conf);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
80
|
try {
|
|
86
81
|
Object.defineProperty(conf,'_module', {value: typeRegistry.getNodeInfo(type), enumerable: false, writable: true })
|
|
87
82
|
Object.defineProperty(conf,'_flow', {value: flow, enumerable: false, writable: true })
|
|
88
83
|
Object.defineProperty(conf,'_path', {value: `${flow.path}/${config._alias||config.id}`, enumerable: false, writable: true })
|
|
84
|
+
|
|
85
|
+
for (var p in conf) {
|
|
86
|
+
if (conf.hasOwnProperty(p)) {
|
|
87
|
+
mapEnvVarProperties(conf,p,flow,conf);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
89
90
|
newNode = new nodeTypeConstructor(conf);
|
|
90
91
|
} catch (err) {
|
|
91
92
|
Log.log({
|
package/lib/nodes/Node.js
CHANGED
|
@@ -503,10 +503,25 @@ function log_helper(self, level, msg) {
|
|
|
503
503
|
o.name = self.name;
|
|
504
504
|
}
|
|
505
505
|
// See https://github.com/node-red/node-red/issues/3327
|
|
506
|
+
// See https://github.com/node-red/node-red/issues/3389
|
|
507
|
+
|
|
508
|
+
let srcError;
|
|
509
|
+
if (msg instanceof Error) {
|
|
510
|
+
srcError = msg;//use existing err object for actual stack
|
|
511
|
+
} else {
|
|
512
|
+
srcError = new Error(msg);//generate a new error for generate a stack
|
|
513
|
+
}
|
|
506
514
|
try {
|
|
507
|
-
self._flow
|
|
515
|
+
if(self instanceof Node && self._flow) {
|
|
516
|
+
self._flow.log(o);
|
|
517
|
+
} else {
|
|
518
|
+
//if self._flow is not present, this is not a node-red Node
|
|
519
|
+
//Set info to "Node object is not a node-red Node" to point out the `Node type` problem in log
|
|
520
|
+
logUnexpectedError(self, srcError, "Node object is not a node-red Node")
|
|
521
|
+
}
|
|
508
522
|
} catch(err) {
|
|
509
|
-
|
|
523
|
+
//build an unexpected error report indicating using the original error (for better stack trace)
|
|
524
|
+
logUnexpectedError(self, srcError, `An error occured attempting to make a log entry: ${err}`)
|
|
510
525
|
}
|
|
511
526
|
}
|
|
512
527
|
/**
|
|
@@ -531,7 +546,7 @@ Node.prototype.error = function(logMessage,msg) {
|
|
|
531
546
|
logMessage = logMessage || "";
|
|
532
547
|
}
|
|
533
548
|
var handled = false;
|
|
534
|
-
if (msg && typeof msg === 'object') {
|
|
549
|
+
if (this._flow && msg && typeof msg === 'object') {
|
|
535
550
|
handled = this._flow.handleError(this,logMessage,msg);
|
|
536
551
|
}
|
|
537
552
|
if (!handled) {
|
|
@@ -619,27 +634,34 @@ function inspectObject(flow) {
|
|
|
619
634
|
}
|
|
620
635
|
}
|
|
621
636
|
|
|
622
|
-
function logUnexpectedError(node, error) {
|
|
623
|
-
|
|
624
|
-
Log.error(`
|
|
637
|
+
function logUnexpectedError(node, error, info) {
|
|
638
|
+
const header = `
|
|
625
639
|
********************************************************************
|
|
626
640
|
Unexpected Node Error
|
|
627
|
-
|
|
628
|
-
Node:
|
|
629
|
-
Type: ${node.type}
|
|
630
|
-
Module: ${moduleInfo}
|
|
631
|
-
ID: ${node._alias||node.id}
|
|
632
|
-
Properties:
|
|
633
|
-
${inspectObject(node)}
|
|
634
|
-
Flow: ${node._flow?node._flow.path:'undefined'}
|
|
635
|
-
Type: ${node._flow?node._flow.TYPE:'undefined'}
|
|
636
|
-
Properties:
|
|
637
|
-
${node._flow?inspectObject(node._flow):'undefined'}
|
|
641
|
+
********************************************************************`;
|
|
638
642
|
|
|
643
|
+
const footer = `
|
|
639
644
|
Please report this issue, including the information logged above:
|
|
640
645
|
https://github.com/node-red/node-red/issues/
|
|
641
|
-
|
|
642
|
-
|
|
646
|
+
********************************************************************`;
|
|
647
|
+
|
|
648
|
+
let detail = [`Info:\n ${info || 'No additional info'}`];
|
|
649
|
+
|
|
650
|
+
//Include Error info?
|
|
651
|
+
if(error && error.stack){
|
|
652
|
+
detail.push(`Stack:\n ${error.stack}`)
|
|
653
|
+
}
|
|
654
|
+
//Include Node info?
|
|
655
|
+
if(node && (node._module || node.type)){
|
|
656
|
+
const moduleInfo = node._module?`${node._module.module}@${node._module.version}`:"undefined";
|
|
657
|
+
const id = node._alias||node.id||"undefined";
|
|
658
|
+
detail.push(`Node:\n Type: ${node.type}\n Module: ${moduleInfo}\n ID: ${id}\n Properties:\n ${inspectObject(node)}`)
|
|
659
|
+
}
|
|
660
|
+
//Include Flow info?
|
|
661
|
+
if(node && node._flow){
|
|
662
|
+
detail.push(`Flow: ${node._flow.path}\n Type: ${node._flow.TYPE}\n Properties:\n ${inspectObject(node._flow)}`)
|
|
663
|
+
}
|
|
664
|
+
Log.error(`${header}\n${detail.join("\n")}\n${footer}`);
|
|
643
665
|
}
|
|
644
666
|
|
|
645
667
|
module.exports = Node;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@node-red/runtime",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.1",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"repository": {
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
}
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@node-red/registry": "2.2.
|
|
20
|
-
"@node-red/util": "2.2.
|
|
19
|
+
"@node-red/registry": "2.2.1",
|
|
20
|
+
"@node-red/util": "2.2.1",
|
|
21
21
|
"async-mutex": "0.3.2",
|
|
22
22
|
"clone": "2.1.2",
|
|
23
23
|
"express": "4.17.2",
|