Задать вопрос
Ответы пользователя по тегу Node.js
  • Как включить авто импорт nodejs модулей?

    Aetae
    @Aetae
    Тлен
    Максимум что можно сделать это включить автомипорт однозначных модулей при использовании тайпскрипта:
    67439068ca97c475077931.png
    Но это по больше части мелочь, т.к. большинство имён экспортов неоднозначны(т.е. имеются в нескольких пакетах).

    Так что используй Alt+Enter как и все мы, и не придумывай.:)

    ...upd:
    Есть, конечно, вариант как например в nuxt\next - задекларировать один файлик с глобальными импортами часто используемых модудей на уровне typescript и потом на этапе сборки добавить импорты там где они используются. Но это такое себе - красивее особо не сделает, т.к. большая часть портянки импортов - всё равно другие твои модули, от которых никуда не уйдёшь, а не глобальные пакеты, но вот запутать может.

    ...upd2:
    Так, погоди ка, перечитал вопрос ещё раз. Ты же не хочешь сказать, что я неправильно понял вопрос изначально, и ты пытаешься импортировать модули из node_modules В package.json? Если так, то Everything_is_bad, увы, прав: package.json- это источник модулей, а не наоборот. Ты берёшь package.json, делаешь npm i и node_modules наполняются указанными модулями. Потом делаешь npm i <имя модуля> и он в первую очередь добавляется в package.json а потом уже node_modules. Как ты получил node_modules без package.json? Тоже руками? Не надо так.
    Ответ написан
    Комментировать
  • MIME тип CSS при попытке добавить stylesheet в head через скрипт. Как решить проблему?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    А почитать что тебе пишет, а посмотреть что ты пишешь?=\

    Refused to apply style from 'https://localhost:3000/css/desctop/main_d.css.css%22%3E' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.Understand this errorAI

    'https://localhost:3000/css/desctop/main_d.css.css%22%3E'

    main_d.css.css%22%3E


    res.send(`https://localhost:3000/css/desctop/${base}">`)
    `https://localhost:3000/css/desctop/${base}">`
    ${base}">
    ">


    У тебя в ссылке лишний "> из-за чего ссылка ведёт никуда, из-за чего сервер возвращает 404 страницу, которая html.
    Ответ написан
  • Ошибка с Babel при сборке Webpack?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Все пакеты связанные с babel обновил до последних версий

    А не надо было. Работает - не трогай.:)

    babel-core - старая версия семилетней давности, новая живёт тут: @babel/core.

    Когда ты обновил всё до последней - что-то осталось старое, что-то работает со свежим, и так просто хрен разберёшь. Верни как было и живи спокойно.
    Или же найди свежий нулевой пресет и перекинь проект на него, если так сильно хочется обновиться. Вручную же версиями библиотек жонглировать можно долго.
    Ответ написан
    3 комментария
  • Зависает на запросах после сборки через webpack?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Возможно дело в том что не вынесены node модули как внешние:
    const nodeExternals = require('webpack-node-externals');
    {
      // ...
      externals: [nodeExternals()],
    }


    Если это не поможжет, то отключи все плагины и оптимизацию.
    Не заработало?
    Сделай тестовый файлик с одним единственным методом, собери и посмотри на результирующий код - подебаж его руками и разберись в чём дело.

    Работает?
    Подключай плагины по одному пока не найдёшь виновника и разбирайся с конфигом оного.
    Ответ написан
  • Как установить cpu-features?

    Aetae
    @Aetae
    Тлен
    Проблема со сбором бинарников(не-js) под твою ноду+систему. Есть два решения: простое и сложное.
    Простое: откатывайся на предыдущую lts версию ноды, пока оно не установится(под lts версии и типичные системы обычно есть готовые сборки - до той версии до которой у пакета была поддержка).
    Сложный: установить глобально windows-build-tools и надеяться что сборка сработает. Если нет - долго и мучительно гуглить темы по сборке под винду.
    ...upd: посмотрел сейчас - wbt deprecated, теперь считается, что достаточно тулз ставится с самой нодой, т.е. тебе надо переустановить node в процессе проставив галочку "Automatically install the necessary tools". А дальше всё также молиться что оно соберётся.
    Ответ написан
    Комментировать
  • Почему не работают алиасы?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    paths в tsconfig - это чисто справочная информация для подсветки, добавленная из расчёта, что вы уже используете какой-то сборщик который такие пути умеет.
    Сам по себе он влияет точно и исключительно на подсветку, нужны сторонние сборщики и\или модули.
    Это by design и wont fix.

    Предполагаемое разработчиками решение: взять какой-ниь vite или webpack и настроить там руками точно такие же алиасы.
    Популярный костыль, который сделает это за тебя для любых вариантов, в том числе и ts-node: tsconfig-paths
    Ответ написан
    Комментировать
  • Почему не собирается проект из за PrismaAdapter?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Ошибка возникает не у тебя, а в стороннем коде модуля next-auth.
    Заигнорить это можно указав skipLibCheck в tsconfig.
    Однако лучше, по возможности, разобраться: причиной может быть что ты используешь слишком старую версию typecript, или старую версию модуля, или случайно подключаешь несколько версий модуля одновременно, или ещё много куда менее вероятных вариантов.
    Ответ написан
  • Как заставить hmr в vite подключатсья по wss?

    Aetae
    @Aetae
    Тлен
    Нужно сконфигурировать nuxt devServer в режиме https из-за этого куска кода(хотя все мы понимаем что в 99% за https у нас отвечает nginx). Ну или монкипатчить.
    Ответ написан
    Комментировать
  • Как автоматически запускать '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
    Тлен
    Подозреваю # в пути лишний.
    Ответ написан
    Комментировать