Используя следующий код:
const assrt = function () {
try {
return chaiAssert.apply(null, arguments);
}
catch (e) {
return handleError(e);
}
};
v.assert = new Proxy(assrt, {
get: function (target, prop) {
if(typeof prop === 'symbol'){
// I don't know what to do with symbols, so return
return Reflect.get(...arguments);
}
// but here! we still get properties that don't exist
if(!chaiAssert[prop]){
return handleError(
new Error(`The assertion library used does not have '${prop}' property or method.`)
);
}
return function () {
try {
return chaiAssert[prop].apply(null, arguments);
}
catch (e) {
return handleError(e);
}
}
}
});
ошибка, которую я получаю с этим кодом:
TypeError: невозможно преобразовать значение символа в строку
и это происходит в строке:
new Error(`The assertion library used does not have '${prop}' property or method.`));
Я использовал прокси раньше, и я никогда не видел, чтобы символы передавались в метод get прокси. Кто-нибудь знает, как обойти эту проблему?
Почему символы передаются функции получения прокси-сервера и как правильно с этим справиться?
Symbol(util.inspect.custom)
, и думаю, что есть и другие, которые также отправляются. - person Alexander Mills   schedule 29.09.2017if(typeof prop === 'symbol'){
. - person Qwertiy   schedule 11.10.2017