Ответы пользователя по тегу Node.js
  • Как автоматически запускать 'close' в Node.JS Readline?

    Aetae
    @Aetae
    Тлен
    Ну какбэ в чём проблема то?
    let lineNumber = 0;
    rl.on("line", (input) => {
      lineNumber++;
      ...
      if(lineNumber >= 2) rl.close();
    });

    Или типа того.
    Ответ написан
    Комментировать
  • Как синхронизировать клиентскую и серверную часть сайта?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Верить клиенту конечно нельзя, но можно сделать вид что веришь:
    1. рассчитывай число и на клиенте и на сервере.
    2. в начале расчёта один раз синхронизируй с сервером.
    3. выводи рассчитываемое на клиенте число с какой угодно плавностью.
    4. если синхронизация прям очень важна - продолжай слать число с сервера и сравнивать с клиентом, если разница в пределах (заданной) погрешности - ничего не делай, еслы вышла за пределы - меняй клиентское(ничего страшного если такое будет происходить изредка).
    5. если сама по себе синхронизация не особо важна, а важно лишь конечно число, то собственно сравнивай клиентское с серверным только в самом конце. Если совпало (с погрешностью в нужную сторону) - всё ок. Не совпало - клиент хацкер - идёт нафиг.

    У любого нормального клиента всё всегда будет совпадать, мегаредкие исключения со сломанными системными часами в любом случае будут баговать, а хацкеры нам и не нужны.
    Ответ написан
    Комментировать
  • Как добавить в results свои данные?

    Aetae
    @Aetae
    Тлен
    results.unshift({ id: 0, text: 'Без категории' });

    Object.assign - работает как называется: assign, не add, append, push или ещё как-то. Он присваивает первому аргументу ключи второго(т.е. перезаписывает, если такие у присутствуют). В случае массива ключом является индекс.
    Ответ написан
    1 комментарий
  • Как использовать TypeScript в существующем проекте Strapi?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Typescript тут не при чём, ошибка у тебя в рантайме, когда никакого тайпскрипта уже нет.
    В чём ошибка - написано у тебя прямо в консоли. Но если способность читать у тебя работает только на форумах, растолкую:
    Strapi пытается прочитать поле routes у несуществующего(undefined) объекта. Почитай документацию и найди куда ты там должен положить какие-то routes.
    Ответ написан
    4 комментария
  • Почему на разных версиях ноды по разному устанавливаются зависимости?

    Aetae
    @Aetae
    Тлен
    Скорее всего дело в либах которые требуют бинарников, а не только чистого js: такие либы сильно зависят как от версии ноды так и от окружения, и имеют готовые бинарники под какие-то популярные(или старые) версии. Если готовых бинарников под версию ноды\окружение нет - он будет пытаться оные собрать, но для этого нужно много всякого мусора и подготовки, потому оно скорее крашнется чем соберётся.)
    Ответ написан
    Комментировать
  • Как отслеживать время у объектов в базе данных?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Никаких setTimeout точно.
    spoiler
    Во-первых: setTimeout ничего не гарантирует, кроме того что он не сработает раньше указанного интервала(зато может гораздо позже).
    Во-вторых: это абсолютно ненадёжно, т.к. любой перезапуск и всё пропало.
    В-третьих: это очень жирно по ресурсам.

    Просто при каждом поступающем сообщении создаёте задачу на временную метку(можно с помощью совета Станислав Макаров) если такой ещё нет, которая в указанное время запросит все записи с такой меткой и выполнит с ними нужное действие.
    Метку и, соответственно, запрос можно создавать с округлением в размере допуска.
    В базе естественно всё это дело надо индексировать и складывать для удобства таких запросов.
    Ответ написан
    Комментировать
  • Как синхронизировать схему БД с использованием TypeORM между микросервисами?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Ну как обычно со всем остальным: вынести в общую библиотеку либо вынести в гит-модуль.
    Ответ написан
    Комментировать
  • Как писать fullstack с webpack?

    Aetae
    @Aetae
    Тлен
    webpack devServer, в частности функция proxy.
    Webpack поднимает сервер с горячей перезагрузкой фронта, бэк сервера поднимаешь на других портах, и обращаешься к api прозрачно с помощью встроенного прокси.
    Ответ написан
    Комментировать
  • Как сделать возврат последнего успешного значения и retry вместе с delay в случае ошибки?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Как-то так (не проверял):
    interface CreateConnectionOptions extends ConnectOptions {
      retryCount?: number;
      retryDelay?: number;
    }
    
    function createConnection(uri: string, {
      retryCount = 6,
      retryDelay = 1000,
      ...mongooseConnectOptions
    }: CreateConnectionOptions = {}): Observable<Connection> {
      let connection$ = defer(() => mongoose.createConnection(uri, mongooseConnectOptions).asPromise());
      
      if (retryCount > 0) {
        connection$ = connection$.pipe(retry({
          count: retryCount,
          delay: retryDelay
        }));
      }
      
      return connection$.pipe(shareReplay(1));
    }
    Ответ написан
    Комментировать
  • Как добавить функцию в класс, чтоб была возможность использовать "this."?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Как обычно:
    Discord.Client.prototype.funcname = function(arg) { ...};
    Ответ написан
  • Как переназначить функцию console.log в nodejs?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Вынеси свою подмену в отдельный модуль и делай его require\import ДО импорта той библиотеки.
    Правда не факт что либа использует именно console.log, а не stdout напрямую.
    Ответ написан
    Комментировать
  • Ошибка при создании приложения React?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Подозреваю # в пути лишний.
    Ответ написан
    Комментировать
  • Почему axios.interceptor при перехвате запроса отправляет актуальные данные, а так-же все прошлые данные?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Каждый раз когда меняется props.jwtAccessToken или создаётся новый компонент - вызывается useMemo. Каждый раз как вызываются useMemo - добавляется ещё один interceptor.

    Interceptor надо вешать, очевидно, один раз одну штуку.
    Ответ написан
  • Будет ли прирост в оптимизации, если импортировать модули из подмодулей?

    Aetae
    @Aetae
    Тлен
    При установке зависимостей этот модуль и так окажется в корне. Если у тебя оказывается две версии одного модуля - одна твоя в корне, другая в подпапке другой зависимости - это плохо и бессмысленно раздувает бандл. Старайся обновлять всё зависимости чтоб такого не было. На крайний случай можно использовать yarn resolutions или установить себе ту же версию что и зависимость.
    А по вопросу, если всё таки такое случится - никакой разницы, кроме того что ты это никак не контролируешь.
    Ответ написан
    1 комментарий
  • Не работает async function. Node JS. Что делать?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    У тебя похоже циклические ссылки: vk.js запрашивает database.js и наоборот. В таких случаях кто первый встал того и тапки.
    Выноси общий функционал в отдельный файл.
    Ответ написан
  • Ошибка после fetch?

    Aetae
    @Aetae
    Тлен
    fetch не умеет в кодировку отличную от utf-8, а там windows-1251.
    Либо юзай классический xmlhttp, которой заодно и сразу xml тебе разберёт, или добавь в цепочку работу ещё и с ArrayBuffer и TextDecoder.

    Ну и само собой у тебя должны быть права такой запрос делать. С рандомного сайта ты не можешь получить данные с vk.com если тебе этого не разрешат. 'no-cors' тут значит только то, что запрос дойдёт туда, ответа же тебе никто не даст.
    Ответ написан
    Комментировать
  • Почему не устанавливается node_modules при npm i?

    Aetae
    @Aetae
    Тлен
    Ну ошибка жалуется на отсутствие python. Попробуй установить.

    Однако подозреваю дело в версии Node, последняя LTS ток неделю как вышла и пакеты могут парить мозги.
    Ответ написан
    1 комментарий
  • Как правильно подключить модуль JS?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Мужик, если не знаешь английского - используй гугл транслейт.
    Давай я пока сделаю это за тебя:
    Не удалось загрузить сценарий модуля: ожидался сценарий модуля JavaScript, но сервер ответил типом MIME «text / html». Для скриптов модуля в соответствии со спецификацией HTML применяется строгая проверка типов MIME.

    Что тут непонятного? Ты не знаешь что такое MIME тип? Так погугли, это важное знание для любого веб разработчика. Хотя можно и догадаться из контекста.

    Как исправить? Поправить MIME тип на сервере, вестимо. Как это делается для конкретного сервера гуглится, вполне очевидно, по фразе "<имя сервера\серверного языка> MIME type".

    Ну и есть некоторый шанс, что вместо скрипта тебе отдаёт 404 страницу, проверь перед всем остальным.
    Ответ написан
    Комментировать
  • Как исправить ошибки Node.js в React.js?

    Aetae
    @Aetae
    Тлен
    Не ошибки, а предупреждения(warning).
    Эти уязвимости(vulnerabilities) тебя не волнуют, они все в библиотех для сборки твоего реакта. Сам себя ты взламывать не будешь, так что забей.
    Это имеет значение если ты захочешь сделать сервак на node и там решишь использовать эти уязвимые библиотеки.
    Ответ написан
  • Как исправить ошибку SyntaxError: missing ) after argument list?

    Aetae
    @Aetae
    Тлен
    await page.on('response', response => {
    ->
    page.on('response', async response => {.

    page.on не возвращает Promise, он подписывается на события.

    Это очевидно, но на всякий случай: то что просходит в callback'e page.on - это уже будет отдельный асинхронный (псевдо)поток, который пойдёт параллельно основному.

    Если вы уверены, что это событие сработает только раз, и вам надо его дождаться в основном "потоке", то следует вручную завернуть его в Promise, условно так:
    const json = await new Promise(resolve => page.on('response', function onResponse(response) {
      if (response.url() == "https://capuk.org/ajax_search/capmoneycourses") {
        page.off('response', onResponse);
        resolve(response.json());
      }
    })); 
    console.log('XHR response received');
    console.log(json);
    Ответ написан
    1 комментарий