Ответы пользователя по тегу Node.js
  • Как исправить ошибку .targets is not allowed in preset options?

    black1277
    @black1277
    Вольный стрелок
    Во-первых, убедитесь, что пресеты установлены тоже:
    npm i -D @babel/preset-env
    Во-вторых, вы пару квадратных скобок забыли. Должно быть вот так:
    {
            test: /\.js$/,
            exclude: /node_modules/,
            use: {
                    loader: 'babel-loader',
                    options: {
                      presets: [
                        ['@babel/preset-env', { targets: "defaults" }]
                      ]
                    }
                  }
          },
    Ответ написан
    Комментировать
  • Как обработать post запрос на nodejs?

    black1277
    @black1277
    Вольный стрелок
    Есть простые и сложные запросы CORS. Когда запрос сложный - браузер отправляет 2 запроса сначала OPTIONS затем основной. GET - простой запрос - поэтому у вас всё работает правильно. POST - тоже простой запрос, но если изменить ему Content-Type на 'application/json' он становится сложным. Ваш сервер не отвечает на предварительный запрос OPTIONS, поэтому браузер блокирует ответ. Читайте подробнее, например здесь
    Ответ написан
    Комментировать
  • Что за баг при замене (replace) текста?

    black1277
    @black1277
    Вольный стрелок
    Так $& - Вставляет сопоставившуюся подстроку - вот документация
    Заэкранируй символ $ вот так
    const content = `&1===e.nodeType)if(r="data-"+t.replace(K,"-$$&").toLow`;
    Ответ написан
    Комментировать
  • В чем отличие EventLoop в браузере от EventLoop в Node.js?

    black1277
    @black1277
    Вольный стрелок
    Вы немного запутались. Начиная с 11-й версии Node.js, разница в поведении приведенного вами кода в браузере и ноде - была устранена. Касаемо 6 этапов или фаз, они происходят внутри движка libuv(libuv - это многоплатформенная библиотека C, которая обеспечивает поддержку асинхронного ввода-вывода на основе циклов событий).
    Разница в том, что в Node.js мы можем не дожидаться окончания всех этих фаз, а вклиниться на определенных этапах для исполнения микрозадач (при помощи setImmediate и process.nextTick), а в браузере идет взаимодействие с Web API’s (браузерные или веб API), из которого могут поступать новые события (клики, движения мыши и др.), добавляющие в очередь новые макрозадачи(если установлены обработчики этих событий). Кроме того, в браузере есть рендеринг, который не может быть выполнен пока идет выполнение задачи движком(из этого следует, что необходимо разбивать тяжелые и длительные задачи на части).
    Как я не пытался изложить точнее и короче, к моим словам можно придраться буквально к каждой фразе. Поэтому, лучше самому изучить первоисточник и пару статей на русском:
    What is the Event Loop?
    Объяснение работы EventLoop в JavaScript
    Игра по правилам: Event loop Node.js
    Как устроены цикл событий и стек вызовов в JavaScript
    Ответ написан
    1 комментарий
  • Почему Uncaught ReferenceError: require is not defined?

    black1277
    @black1277
    Вольный стрелок
    Начиная, не помню с какой версии разработчики электрон отключили поддержку возможностей Node в фронтед части скриптов по умолчанию (из соображений безопасности). Чтобы включить такую поддержку, нужно в скрипте создающем окно приложения установить опцию.
    win = new BrowserWindow({
            icon: 'trayTemplate.png',
            width: 1000,
            height: 900,
            minWidth: 500,
            minHeight: 400,
            show: false,
            backgroundColor: '#e2ffee',
            webPreferences: {
                nodeIntegration: true,     // Node.js в рендер процессе доступен
                preload: path.join(__dirname, 'preload.js')
            }
        })

    или в файле package.json по документации
    Ответ написан
  • Как считать файл nodejs?

    black1277
    @black1277
    Вольный стрелок
    Можно считать весь файл и разбить его на массив строк, разбив по символам окончания строки. Только нужно учесть в какой операционной системе был создан текстовый файл, потому что в windows это два символа - \r\n, в Unix - \n, а в Mac - \r
    const endLine = '\r\n'; // если Windows
    let lineArray = String( fs.readFileSync( 'price.txt' ) ).split( endLine );
    // что-то делаем с полученными строками
    // ...
    let file = lineArray.join( endLine ) // соединяем обратно в целый файл
    Ответ написан
    Комментировать
  • Как в GULP скопировать папку с html с внутренней структурой?

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

    black1277
    @black1277
    Вольный стрелок
    Сейчас вы шлете ответ response.end еще не обработав события 'data' и 'end', поэтому получаете 3,1,2. Перенесите строку
    response.end(JSON.stringify(users[0]), console.log('3'));

    сразу под console.log('2'); и получите желаемый результат.
    Ответ написан
    Комментировать
  • Ошибка в кодировке текста?

    black1277
    @black1277
    Вольный стрелок
    Библиотека request давно устарела. Вместо неё лучше использовать axios.
    Вы пытаетесь прочитать удаленный файл в кодировке ANSI и перекодировать в UTF-8.
    Для этого вам понадобится библиотека iconv-lite . Установите её:
    npm i iconv-lite
    Тогда сможете использовать такой код:
    const request = require('request'),
      fs = require('fs'),
      iconv = require('iconv-lite');
    
    request({
      url: 'https://litportal.ru/trial/txt/6376244.txt',
      encoding: null,
      body: 'Buffer'
    }).pipe(iconv.decodeStream('win1251'))
      .pipe(iconv.encodeStream('utf8'))
      .pipe(fs.createWriteStream('file-in-utf8.txt'));
    Ответ написан
    Комментировать
  • Почему не могу развернуть библиотеку?

    black1277
    @black1277
    Вольный стрелок
    На сайте этой библиотеки красивым зеленым бейджиком указана минимальная необходимая версия Node для успешной работы - от 12 версии.
    68747470733a2f2f696d672e736869656c64732e696f2f6e6f64652f762f74656c65677261662e7376673f7374796c653d666c61742d737175617265
    обновляйте ноду и потом пробуйте.
    Ответ написан
  • Оцените пожалуйста мой первый проект "Crud To-do list" на React.js + Node.js + Postgresql?

    black1277
    @black1277
    Вольный стрелок
    По вопросам:
    1 Особой разницы нет, только для вашей IDE - она правильнее подсказки будет делать в файле jsx
    2 Первое предупреждение о том, что используете key={todo.id} немного не там - нужно в родительский div это переместить
    <div className="todos" вот сюда>
           <div key={todo.id} className="item-todo" >

    второе предупреждение связано с тем, что хук в своем массиве зависимостей не видит вызываемую в нем функцию
    useEffect(() => {
            getTodos()
        }, [вот тут])

    пока можете поставить такую строку, чтобы не видеть ошибку
    useEffect(() => {
            getTodos()
    // eslint-disable-next-line
        }, [])

    Если хотите разобраться с правильным использованием useEffect
    Ответ написан
    1 комментарий
  • Как подключить html и css файлы к серверу на node.js?

    black1277
    @black1277
    Вольный стрелок
    Вам нужно использовать функцию http.createServer
    Подробнее об этом здесь смотрите
    Ответ написан