Login8
@Login8
Программист, критик, наватор

Почему не возвращается значение из модуля в javascript в nodejs?

Здравствуйте.
У меня есть 2 файла:
test1.js
import JSBI from './jsbi.js';
console.log( JSBI.BigInt('TEST!') );


И файл jsbi.js

class JSBI extends Array {
  static BigInt(arg) {
    return arg;
  }
}
export default { JSBI, BigInt };


Когда вызываю test1.js такой командой "node test1.js" то у меня почему то выскакивает ошибка SyntaxError: Cannot convert TEST! to a BigInt
Я же ничего не преоброзовываю, а просто вызываю метод BigInt класса JSBI , он должен просто вернуть "TEST!"
nodejs у меня версии 14
Кто знает в чем дело?
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
mmmaaak
@mmmaaak
Когда ты в файле jsbi.js экспортируешь как default объект { JSBI, BigInt } ты по сути наружу экспортировал объект:
{
JSBI: JSBI,
BigInt: BigInt
}

где BigInt это стандартная функция JavaScript-а, которая преобразует переданный аргумент в тип BigInt, потом ты импортируешь весь этот объект в файле test1.js, по сути весь этот объект
{
JSBI: JSBI,
BigInt: BigInt
}
теперь сохранен в переменной JSBI, и когде ты вызываешь JSBI.BigInt, ты вызываешь не статический метод класса (чтоб вызвать его нужно было написать JSBI.JSBI.BigInt() ), а вызываешь метод BigInt который преобразуед аргумент в тип, поэтому он и ругается, так как строка не может быть в него преобразована
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы