namespaces returned by debug.disable are not always accepted by debug.enable
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 45/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- javascript
- Domain
- tooling
Research direction
Start in common.js at the enable implementation around line 184 and reproduce the issue with DEBUG=":error:". Trace how debug.disable() transforms the namespace before it is passed back to debug.enable(). Done means the namespace returned by disable() can be passed to enable() without an invalid regular expression error.
Written by the indexing model from the issue text.
Description
I have seen some strange behavior when temporary disabling the current namespaces, and trying to re-enable the namespaces returned by the debug.disable() call later in the debug.enable() call.
This happened while debugging a node-red custom node that I'm working on:
First I start node-red with some logging enabled:
DEBUG="*:error:*" node-red
Then using a REST call i fetch the current namespaces as follows:
RED.httpAdmin.get('/debug', function (req, res) {
console.log("/debug",req.method);
var namespaces = debug.disable();
console.log("/debug",req.method,namespaces);
debug.enable(namespaces);
res.end(JSON.stringify(Object({ "namespaces": namespaces })));
});
When this function is called, it prints the following on the console:
/debug GET
/debug GET .*?:error:*
SyntaxError: Invalid regular expression: /^..*??:error:.*?$/: Nothing to repeat
at new RegExp (<anonymous>)
at Function.enable (/home/hurenkam/Workspace/node-red-contrib-mh-hue/node_modules/debug/src/common.js:184:28)
at /home/hurenkam/Workspace/node-red-contrib-mh-hue/src/debug.js:21:15
at Layer.handle [as handle_request] (/usr/local/lib/node_modules/node-red/node_modules/express/lib/router/layer.js:95:5)
at next (/usr/local/lib/node_modules/node-red/node_modules/express/lib/router/route.js:144:13)
at Route.dispatch (/usr/local/lib/node_modules/node-red/node_modules/express/lib/router/route.js:114:3)
at Layer.handle [as handle_request] (/usr/local/lib/node_modules/node-red/node_modules/express/lib/router/layer.js:95:5)
at /usr/local/lib/node_modules/node-red/node_modules/express/lib/router/index.js:284:15
at Function.process_params (/usr/local/lib/node_modules/node-red/node_modules/express/lib/router/index.js:346:12)
at next (/usr/local/lib/node_modules/node-red/node_modules/express/lib/router/index.js:280:10)
It would seem that the wildcard namespace "*:error:*" is being translated to ".*?:error:*" which when fed back into debug.enable() triggers an error in common.js @ line 184 when trying to push the expression into a RegExp:
common.js:
184: createDebug.names.push(new RegExp('^' + namespaces + '$'));
- Dominant language
- JavaScript
- Stars
- 11.5k
- Forks
- 992
- PR merge metrics
- No merged PRs in 30d
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from debug-js/debug
-
Difficulty 1/5 Under an hour Newbie friendliness 82/100
-
Difficulty 4/5 3-5 days Newbie friendliness 25/100
-
Debug as JSON Open
Difficulty 5/5 Over a week Newbie friendliness 25/100
-
Difficulty 3/5 1-2 days Newbie friendliness 35/100
-
Difficulty 3/5 1-2 days Newbie friendliness 28/100
Similar issues
-
ai-observability bug team/ai-observability
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
AllTheMods/ATM-10-L#19 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
SignalK/n2k-signalk#345 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 1/5 1-3 hours Newbie friendliness 88/100
JuliaPluto/PlutoPlotly.jl#72 ·