Сборка Docker: npm WARN EBADENGINE Неподдерживаемый движок

Я создаю изображение на основе mcr.microsoft.com/devcontainers/python:0-3.11-bullseye В конце моего файла докеров у меня есть следующее:

RUN apt-get update && apt-get install -y nodejs npm
RUN npm install npm@latest -g && \
    npm install n -g && \
    n latest
#RUN npm install -g typescript

RUN node --version
RUN npm --version

Я вижу это в конце сборки:

#13 [ 9/12] RUN apt-get update && apt-get install -y nodejs npm
#13 CACHED

#14 [10/12] RUN npm install npm@latest -g &&     npm install n -g &&     n latest
#14 0.793 npm WARN EBADENGINE Unsupported engine {
#14 0.793 npm WARN EBADENGINE   package: '[email protected]',
#14 0.794 npm WARN EBADENGINE   required: { node: '^18.17.0 || >=20.5.0' },
#14 0.795 npm WARN EBADENGINE   current: { node: 'v12.22.12', npm: '7.5.2' }
#14 0.796 npm WARN EBADENGINE }
#14 2.626
#14 2.626 added 1 package, and audited 209 packages in 2s
#14 2.626
#14 2.626 24 packages are looking for funding
#14 2.626   run `npm fund` for details
#14 2.627
#14 2.627 found 0 vulnerabilities
#14 3.639
#14 3.639 added 1 package, and audited 2 packages in 890ms
#14 3.640
#14 3.640 found 0 vulnerabilities
#14 3.813   installing : node-v22.1.0
#14 3.898        mkdir : /usr/local/n/versions/node/22.1.0
#14 3.901        fetch : https://nodejs.org/dist/v22.1.0/node-v22.1.0-linux-x64.tar.xz
#14 7.582      copying : node/22.1.0
#14 8.766    installed : v22.1.0 (with npm 10.7.0)
#14 8.766
#14 8.766 Note: the node command changed location and the old location may be remembered in your current shell.
#14 8.766          old : /usr/bin/node
#14 8.766          new : /usr/local/bin/node
#14 8.766 If "node --version" shows the old version then start a new shell, or reset the location hash with:
#14 8.766 hash -r  (for bash, zsh, ash, dash, and ksh)
#14 8.766 rehash   (for csh and tcsh)
#14 DONE 8.9s

#15 [11/12] RUN node --version
#15 0.399 v22.1.0
#15 DONE 0.4s

#16 [12/12] RUN npm --version
#16 0.712 10.7.0
#16 DONE 0.7s

Мне не ясно, как это решить и является ли это проблемой, поскольку, похоже, установлены более новые версии.

Я видел несколько сообщений stackoverflow о том, как установить npm/node, попробовал многие из них, но, похоже, не могу избавиться от этих строк WARN. Стоит ли беспокоиться по этому поводу? если да, то каков правильный способ решения этой проблемы

Обновлено: после публикации этого сообщения я заметил строку CACHED после первоначальной установки nodejs и npm. Сборка с опциями --no-cache, похоже, не помогает.

Вы не сможете установить последнюю версию npm на узле 12 (похоже, что это то, что поставляется с вашим базовым контейнером), возможно, вместо этого сделайте npm install npm@6. Когда вы устанавливаете узел 20 с помощью n, он также должен установить более новый npm. Однако я бы посоветовал вам установить узел 20 напрямую, а не через n.

apokryfos 11.05.2024 12:15

@apokryfos спасибо. что интересно, как только я попадаю в контейнер, версии становятся самыми последними. так что я предполагаю, что из-за базового образа предупреждение появляется при попытке npm install npm@latest -q, но позже n сможет установить последнюю версию узла и последнюю версию npm

mike01010 11.05.2024 19:20
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
215
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Следующее позволит обойти устаревшую версию узла, подразумеваемую тем, что ваш образ заморожен во времени, поэтому вместо того, чтобы возвращаться к старой версии узла дистрибутива, запустите это...

curl -fsSL https://deb.nodesource.com/setup_22.x | bash - &&\
apt-get install -y nodejs

Подробнее о ваших возможностях читайте на странице https://github.com/nodesource/distributions?tab=readme-ov-file#debian-versions

Команды, выполняемые после этой команды установки, должны использовать современный узел. Я бы не стал устанавливать дистрибутивную версию узла в любое время — его основная задача — иметь инструменты MS и правильный Python.

спасибо - я видел подобные рекомендации. Кажется, это зависит от знания последней версии. есть ли вариант, который вытащит и установит последнюю версию?

mike01010 11.05.2024 23:55

Если вы используете deb.nodesource.com/setup_lts.x , вы получите версию LTS, а если вы используете deb.nodesource.com/setup_current.x, вы получите версию Current.

cefn 12.05.2024 01:10

Другие вопросы по теме