Библиотека bcrypt.js представляет собой реализацию алгоритма хеширования bcrypt на чистом JavaScript без нативных зависимостей. Это делает её удобной для использования как в среде Node.js, так и в браузере.
Основной способ подключения — через менеджер пакетов npm. Установка выполняется командой:
npm install bcryptjs
После выполнения команды библиотека будет добавлена в директорию
node_modules, а также автоматически прописана в секции
dependencies файла package.json.
При использовании менеджера пакетов yarn команда установки выглядит следующим образом:
yarn add bcryptjs
Результат аналогичен npm: библиотека становится доступной в проекте и фиксируется в конфигурации зависимостей.
После установки необходимо корректно импортировать библиотеку в коде.
В классическом окружении Node.js используется синтаксис
require:
const bcrypt = require('bcryptjs');
Переменная bcrypt теперь содержит весь API библиотеки,
включая методы для генерации соли и хеширования.
При использовании современного синтаксиса модулей (ESM)
подключение выполняется через import:
import bcrypt from 'bcryptjs';
Важно учитывать, что для корректной работы ESM в Node.js необходимо
либо указать "type": "module" в package.json,
либо использовать расширение .mjs.
bcrypt.js может использоваться без сборщиков напрямую в браузере.
Библиотека доступна через CDN-сервисы. Подключение осуществляется добавлением скрипта:
<script src="https://cdn.jsdelivr.net/npm/bcryptjs/dist/bcrypt.min.js"></script>
После загрузки объект dcodeIO.bcrypt становится
доступным в глобальной области:
const bcrypt = dcodeIO.bcrypt;
После подключения рекомендуется убедиться, что библиотека работает корректно. Минимальная проверка:
const bcrypt = require('bcryptjs');
const hash = bcrypt.hashSync('password', 10);
console.log(hash);
Если в консоли выводится строка, начинающаяся с $2a$ или
$2b$, библиотека установлена и функционирует правильно.
Объект bcrypt предоставляет набор ключевых методов:
hashSync — синхронное хешированиеhash — асинхронное хешированиеcompareSync — синхронное сравнениеcompare — асинхронное сравнениеgenSaltSync — генерация соли (синхронно)genSalt — генерация соли (асинхронно)Пример получения списка методов:
console.log(Object.keys(bcrypt));
Существует также библиотека bcrypt, которая использует
нативные расширения (C++ bindings). В отличие от неё:
Выбор зависит от требований проекта: для серверных приложений с высокой нагрузкой чаще выбирается нативный bcrypt, для универсальности — bcrypt.js.
Ошибки вида:
Error: require is not defined
возникают при неправильной конфигурации модулей. Решение — привести стиль импорта в соответствие с настройками проекта.
Ошибка:
Cannot find module 'bcryptjs'
указывает на отсутствие установленной зависимости. Требуется повторная установка:
npm install bcryptjs
Если библиотека не загружается в браузере:
import bcrypt from 'bcryptjs';
async function run() {
const password = 'mySecret';
const saltRounds = 10;
const hash = await bcrypt.hash(password, saltRounds);
const isMatch = await bcrypt.compare(password, hash);
console.log({ hash, isMatch });
}
run();
Этот пример демонстрирует корректное подключение и базовое использование библиотеки после установки.