I have the following code:
for ([uri, { socket, settings }] of map) {
// parse websocket urls
let url1 = new url.URL(ws.url);
let url2 = new url.URL(uri);
// override http(s) with ws(s)
url2.protocol = url1.protocol;
console.log(`Bridge "%s" <-> ${socket}://${host}:${port}`, url2);
bridge(url2, settings, socket);
}
which deconstruct variables, but eslint does not detect the variables:
/home/.../handler.js
81:11 error 'uri' is not defined no-undef
81:18 error 'socket' is not defined no-undef
81:26 error 'settings' is not defined no-undef
85:32 error 'uri' is not defined no-undef
90:40 error 'socket' is not defined no-undef
90:52 error 'host' is not defined no-undef
90:60 error 'port' is not defined no-undef
92:22 error 'settings' is not defined no-undef
92:32 error 'socket' is not defined no-undef
✖ 9 problems (9 errors, 0 warnings)
How can i tell the linter that its fine and the variables are detect properly?
.eslintrc.json
{
"env": {
"node": true,
"commonjs": true,
"es2021": true
},
"parserOptions": {
"ecmaVersion": 12
},
"ignorePatterns": [
"node_modules"
],
"extends": [
"eslint:recommended"
],
"rules": {
"semi": [
"error",
"always"
],
"quotes": [
"error",
"double",
{
"avoidEscape": true, // Does not work https://eslint.org/docs/rules/quotes#avoidescape
"allowTemplateLiterals": true
}
]
}
}
CodePudding user response:
for of loop requires const, for(const
const map = [
[
"uri",
{
socket: "",
settings: ''
},
],
];
for (const [uri, { socket, settings }] of map) {
console.log(uri, socket, settings);
}