Программирование

Исправить ошибку 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 после неудачных переустановок.

5 ответов 1 просмотр

Как исправить ошибку ‘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

Представьте: вы запускаете 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. После этого просто:

  1. npm uninstall -g @loopback/cli
  2. npm 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 за минуту.

  1. Найдите глобальный путь к @loopback/cli. Выполните npm root -g — это директория node_modules. Или для mise/asdf: ~/.local/share/mise/installs/node/24.x.x/lib/node_modules/@loopback/cli.

  2. Откройте файл lib/cli.js (строка 39). Там импорт:

const camelCaseKeys = require('camelcase-keys');

И вызов camelCaseKeys().

  1. Замените на:
const camelCaseKeys = require('camelcase-keys').default;
  1. Сохраните. Запустите 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 или обновились? Проверьте:

  1. lb4 app test-app — без ошибок.
  2. cd test-app, npm i.
  3. npm start — сервер на 3000 порту.
  4. 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+.


Источники

  1. 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
  2. Fix camelcase-keys ESM issue in CLI — PR для реверта camelcase-keys и фикса loopback error: https://github.com/loopbackio/loopback-next/pull/11398
  3. ESM require error after lb4 app — Issue по ERR_REQUIRE_ESM на Node.js 18.x в loopback 4: https://github.com/loopbackio/loopback-next/issues/9393
  4. 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 без нервов. Удачи с проектом!

D

Ошибка ‘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 apploopback ошибка исчезнет. Ожидайте слияния PR в loopback-next для официального фикса loopback cli.

Diana Lau / Менеджер по разработке

В 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.

Lucile Jerber / Разработчик

Похожая 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, если версии совместимы.

Авторы
D
Разработчик
U
Разработчик
Diana Lau / Менеджер по разработке
Менеджер по разработке
Lucile Jerber / Разработчик
Разработчик
Samarpan Bhattacharya / Разработчик
Разработчик
Источники
Портал документации
Проверено модерацией
НейроОтветы
Модерация