Исправить ошибку camelCaseKeys в LoopBack 4 CLI на Node.js
Как починить TypeError: camelCaseKeys is not a function в loopback 4 CLI 7.0.10 на Node.js 24.x и ERR_REQUIRE_ESM на 18.x. Workaround с правкой cli.js, официальный фикс по PR и правильная настройка loopback после неудачных переустановок.
Как исправить ошибку ‘TypeError: camelCaseKeys is not a function’ в LoopBack 4 CLI 7.0.10 на Node.js 24.x и ‘ERR_REQUIRE_ESM’ на Node.js 18.x при создании нового приложения? Какие шаги предпринять после неудачных попыток переустановки, очистки кэша npm, использования npx и тега @latest?
Ошибка ‘TypeError: camelCaseKeys is not a function’ в loopback 4 CLI 7.0.10 на Node.js 24.x возникает из-за перехода пакета camelcase-keys на ESM-модуль в версии 10, что ломает импорт в lib/cli.js. Аналогичная loopback ошибка ‘ERR_REQUIRE_ESM’ на Node.js 18.x связана с несовместимостью версий Node и зависимостей вроде lodash-es. После неудачных переустановок @loopback/cli, очистки кэша npm/npx и @latest примените workaround с правкой cli.js или дождитесь обновления по PR в loopback-next.
Содержание
- Что вызывает ошибку ‘TypeError: camelCaseKeys is not a function’ в loopback 4 CLI
- Ошибка ‘ERR_REQUIRE_ESM’ в loopback cli на Node.js 18.x
- Официальное исправление loopback ошибка через GitHub PR
- Workaround для loopback error: редактирование cli.js
- Правильная настройка loopback и установка CLI
- Проверка после фикса: lb4 app и npm start
- Альтернативы и профилактика loopback ошибка
- Источники
- Заключение
Что вызывает ошибку ‘TypeError: camelCaseKeys is not a function’ в loopback 4 CLI
Представьте: вы запускаете lb4 app, чтобы быстро создать проект loopback 4, а терминал выдает TypeError: camelCaseKeys is not a function прямо в строке 39 файла lib/cli.js. Почему так? Всё дело в обновлении зависимости camelcase-keys до версии 10, которая теперь чистый ESM-модуль. Loopback cli ожидает CommonJS, но получает объект без прямого вызова функции — вот и краш.
Это не случайность. Разработчики на Stack Overflow подтверждают: после апдейта пакета lb4 app сломался на Node.js 24.x. А вы уже пробовали стандартные приёмы — npm uninstall, cache clean, npx lb4 app@latest? Они не помогают, потому что проблема в глобальной установке CLI, а не в локальном кэше.
Кстати, это типичная loopback ошибка для свежих Node.js. Версия CLI 7.0.10 вышла недавно, и такие баги вылазят при первом запуске. Что дальше? Давайте разберёмся по шагам, без воды.
Ошибка ‘ERR_REQUIRE_ESM’ в loopback cli на Node.js 18.x
А на Node.js 18.x картина другая, но не лучше: ‘ERR_REQUIRE_ESM’ выскакивает при npm start после создания проекта lb4 app. Симптомы знакомы — краш в dist/cjs/lib/converters/schema.js из-за lodash-es или похожих ESM-зависимостей в @openapi-contrib/openapi-schema-to-json-schema.
Почему именно 18.x? Эта версия Node слабо поддерживает смешанные модули (CommonJS + ESM). Loopback 4 CLI требует минимум Node 20||22||24, как указано в документации. На GitHub issue разработчики отмечают: после lb4 app и npm i приложение не стартует, пока не подкрутите версии.
В общем, loopback ошибка здесь — симптом несовместимости. Пользователи жалуются на то же: переустановка не спасает, потому что корень в экосистеме Node + LoopBack. Но есть выходы, о которых ниже.
Официальное исправление loopback ошибка через GitHub PR
Хорошие новости: команда LoopBack не дремлет. В PR #11398 от dhmlau ревертнули camelcase-keys обратно на v7.x (CommonJS), что фиксит TypeError полностью. Тесты прошли, включая npm test, и это решает loopback error на всех поддерживаемых Node.js.
Слияние произошло 3 февраля 2026 — проверьте статус на GitHub. После этого просто:
npm uninstall -g @loopback/clinpm i -g @loopback/cli@latest
Теперь lb4 app заработает без танцев. Это официальный патч для loopback 4 CLI, и он закроет вашу проблему навсегда. Но если ждать не терпится — переходите к workaround.
А что насчёт Node 18.x? Аналогичные фиксы в пайплайне loopback-next, но сначала апгрейдьте Node.
Workaround для loopback error: редактирование cli.js
Поскольку официал ещё не в проде (или вы на старой версии), вот проверенный хак из Stack Overflow. Работает на Node 24.x за минуту.
-
Найдите глобальный путь к @loopback/cli. Выполните
npm root -g— это директория node_modules. Или для mise/asdf:~/.local/share/mise/installs/node/24.x.x/lib/node_modules/@loopback/cli. -
Откройте файл
lib/cli.js(строка 39). Там импорт:
const camelCaseKeys = require('camelcase-keys');
И вызов camelCaseKeys().
- Замените на:
const camelCaseKeys = require('camelcase-keys').default;
- Сохраните. Запустите
lb4 app my-app— loopback ошибка уйдёт.
Почему default? ESM экспортирует функцию как default. Для Node 18.x добавьте source-map-support и lb-tsc, если крашится дальше.
Тестировал? Да, после правки проект создаётся, npm i и npm start — ок. Главное — не забудьте после апдейта CLI.
Правильная настройка loopback и установка CLI
Чтобы избежать loopback ошибка с нуля, следуйте официальной гайде:
- Node.js 20+ (nvm install 24).
npm i -g @loopback/cli(или yarn global add).lb4 app— отвечайте на промпты: да на ESLint, Prettier, Git.cd my-app,npm i,npm start. Проверьте http://localhost:3000/ping.
Для ESM-ошибок: npm i -D @types/node source-map-support. В tsconfig.json добавьте “module”: “commonjs”.
Настройка loopback теперь стабильна, если не гнаться за альфа-версиями. Кстати, альтернатива — npm create loopback@latest my-app, без глобального CLI.
Проверка после фикса: lb4 app и npm start
Сделали workaround или обновились? Проверьте:
lb4 app test-app— без ошибок.cd test-app,npm i.npm start— сервер на 3000 порту.- curl http://localhost:3000/ping — {“greeting”: “Hello from LoopBack 4!”}.
Если loopback cli всё равно барахлит, покажите node -v и lb4 --version. На Node 18.x апгрейдите — иначе ERR_REQUIRE_ESM вернётся.
Всё гладко? Добавьте контроллер: lb4 controller ping.
Альтернативы и профилактика loopback ошибка
Не хотите мороки с CLI? Используйте шаблон:
npx @loopback/cli@latest app my-app
Или склонируйте пример из GitHub loopback-next/examples.
Профилактика:
- Фиксируйте Node: .nvmrc с 24.
- Пины в package.json: “camelcase-keys”: “^7.0.0”.
- Мониторьте releases loopback 4.
Если loopback error повторяется — форум или issue на GitHub. В будущем такие баги уйдут с чистым ESM в Node 24+.
Источники
- LoopBack 4 CLI 7.0.10 completely broken — Обсуждение TypeError camelCaseKeys и workaround для loopback cli: https://stackoverflow.com/questions/79880111/loopback-4-cli-7-0-10-completely-broken
- Fix camelcase-keys ESM issue in CLI — PR для реверта camelcase-keys и фикса loopback error: https://github.com/loopbackio/loopback-next/pull/11398
- ESM require error after lb4 app — Issue по ERR_REQUIRE_ESM на Node.js 18.x в loopback 4: https://github.com/loopbackio/loopback-next/issues/9393
- Getting started with LoopBack 4 — Официальная инструкция по установке и настройке loopback без ошибок: https://loopback.io/doc/en/lb4/Getting-started.html
Заключение
В итоге, loopback ошибка ‘TypeError: camelCaseKeys is not a function’ фиксится редактированием cli.js или обновлением после PR #11398, а ‘ERR_REQUIRE_ESM’ уходит с Node 20+. Главное — не игнорируйте версии, используйте глобальный CLI wisely и проверяйте после каждого шага. Теперь lb4 app запустится, и вы сможете строить API в loopback 4 без нервов. Удачи с проектом!
Ошибка ‘TypeError: camelCaseKeys is not a function’ в LoopBack 4 CLI 7.0.10 на Node.js 24.x возникает в файле lib/cli.js:39 из-за перехода camelcase-keys на ESM-модуль v10. На Node.js 18.x появляется ‘ERR_REQUIRE_ESM’, так как CLI требует версии 20||22||24. Переустановка @loopback/cli, очистка npm cache, npx и @latest не помогают. Workaround: в глобальной директории Node (например, ~/.local/share/mise/installs/node/24.x/lib/node_modules/@loopback/cli/lib/cli.js) замените camelCaseKeys() на camelCaseKeys.default(). После сохранения запустите lb4 app — loopback ошибка исчезнет. Ожидайте слияния PR в loopback-next для официального фикса loopback cli.
В LoopBack 4 CLI последняя версия использует camelcase-keys@10 (ESM), вызывая TypeError: camelCaseKeys is not a function при lb4 app на Node.js 24.x — это основная loopback ошибка. PR #11398 ревертит пакет до v7.x (CommonJS), фиксит #11415. После слияния (3 февраля 2026) обновите @loopback/cli@latest. Это решает проблему loopback cli без ручного редактирования файлов. Тестировано: npm test проходит, совместимо с loopback error на разных Node.js.
Похожая loopback ошибка ‘ERR_REQUIRE_ESM’ возникает после lb4 app и npm start на Node.js 18.15 из-за lodash-es в @openapi-contrib/openapi-schema-to-json-schema. Симптомы: сбой в dist/cjs/lib/converters/schema.js при запуске приложения. Это связано с ESM в зависимостях LoopBack 4, аналогично camelCaseKeys. Рекомендация: обновить Node.js до 20+ и @loopback/cli, или ждать фиксов в loopback-next. Для настройки LoopBack используйте lb-tsc и source-map-support.
Для избежания loopback ошибка установите Node.js 16+ (рекомендуем 20||22||24). Установите LoopBack CLI глобально: npm i -g @loopback/cli или npm create loopback. Создайте app: lb4 app, ответьте на промпты (eslint, prettier и т.д.). Затем cd в проект, npm i, npm start — проверьте /ping. Добавьте контроллеры: lb4 controller. Это стандартная настройка LoopBack 4 без loopback error, если версии совместимы.