Генерация QR-кодов в Node.js: библиотека qrcode и примеры

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Генерация QR-кодов на Node.js с помощью библиотеки qrcode

QR-коды стали неотъемлемой частью современного веба: от ссылок на Wi-Fi до подтверждения платежей. Если вы разрабатываете бэкенд на Node.js и хотите программно создавать QR-коды, библиотека qrcode — самый популярный и простой инструмент. Она не требует установки дополнительных графических пакетов и умеет выводить результат в разных форматах: PNG, SVG, HTML-канвас и даже в текстовый вид для терминала.

Установка

Установите пакет через npm:

npm install qrcode

После установки подключите модуль в ваш проект:

const QRCode = require('qrcode');

Основные методы

Библиотека предоставляет три основных метода для генерации:

  • QRCode.toDataURL(text, options) — возвращает Data URL (base64 строку с изображением PNG).
  • QRCode.toBuffer(text, options) — возвращает Buffer с PNG-изображением (удобно для сохранения в файл или отправки через HTTP).
  • QRCode.toString(text, options) — возвращает строку в виде SVG или терминальных символов (тип вывода задаётся в options.type).
  • QRCode.toCanvas(canvasElement, text, options) — для браузерного окружения (canvas).

Простой пример: создание QR-кода в PNG (буфер)

Самый частый сценарий — сгенерировать изображение и сохранить его в файл или отдать пользователю. Вот как это сделать:

const QRCode = require('qrcode');
const fs = require('fs');

QRCode.toBuffer('https://pythonlib.ru', {
  width: 400,
  margin: 2,
  color: {
    dark: '#000000',
    light: '#ffffff'
  }
})
.then(buffer => {
  fs.writeFileSync('qrcode.png', buffer);
  console.log('QR-код сохранён в qrcode.png');
})
.catch(err => console.error(err));

В этом примере мы задаём размер 400 пикселей, отступ в 2 модуля и чёрно-белую цветовую схему. Метод toBuffer возвращает Promise, поэтому используем .then() или async/await.

Генерация QR-кода в SVG

Для веб-приложений часто удобнее использовать векторный формат SVG — он масштабируется без потери качества и занимает меньше места. Укажите type: 'svg' в опциях:

const QRCode = require('qrcode');

QRCode.toString('https://pythonlib.ru', {
  type: 'svg',
  width: 300,
  color: {
    dark: '#1a73e8',
    light: '#ffffff'
  }
})
.then(svgString => {
  console.log(svgString);
  // Теперь вы можете сохранить svgString в файл или вставить в HTML
})
.catch(err => console.error(err));

Вывод QR-кода прямо в терминал

Иногда нужно быстро проверить ссылку, не открывая браузер. Библиотека умеет рисовать QR-код символами Unicode в консоли:

const QRCode = require('qrcode');

QRCode.toString('Hello, PythonLib!', {
  type: 'terminal',
  small: true
})
.then(qr => {
  console.log(qr);
})
.catch(err => console.error(err));

Параметр small: true делает QR-код компактнее (использует половинные блоки). Если его убрать, изображение будет крупнее, но более детальным.

Настройки и параметры

Объект options позволяет гибко управлять генерацией. Основные поля:

Рекомендаций