const logger = require('node-color-log');
class Args {
available = {
'--test': {
isValueRequired: true,
},
};
passed = [];
names = [];
constructor() {}
listen = () => {
this.passed = process.argv.slice(2); // получаю массив аргументов и удаляю первые два.
this.names = this.passed.filter((_) => _.indexOf('--') > -1); // фильтрую переданные значения чтобы получить содержащие "--" и получаю список имён аргументов.
logger.debug(this.names); // ['--test']
this.names.filter((name) => {
logger.debug(typeof name); // string
logger.debug(name); // --test
logger.debug(this.available[name]); // undefined
logger.debug(this.available['--test']); // {"isValueRequired": "true"}
logger.debug(this); // this здесь всё ок, доступ к this.available есть
return !this.available[name].isValueRequired;
});
return this;
};
get available() {
return this.available;
}
}
const args = new Args();
args.listen();
Ошибка:
Arguments.js:102
return !this.available[name].isValueRequired
^
TypeError: Cannot read properties of undefined (reading 'isValueRequired')
Node.js v20.11.0
Загрузил на песок, там работает:
https://stackblitz.com/edit/node-xygtcf?file=index.js
Выполнить:
node index.js --test 123
❯ node -v
v18.18.0