Я создаю изображение на основе 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, похоже, не помогает.
@apokryfos спасибо. что интересно, как только я попадаю в контейнер, версии становятся самыми последними. так что я предполагаю, что из-за базового образа предупреждение появляется при попытке npm install npm@latest -q, но позже n сможет установить последнюю версию узла и последнюю версию npm





Следующее позволит обойти устаревшую версию узла, подразумеваемую тем, что ваш образ заморожен во времени, поэтому вместо того, чтобы возвращаться к старой версии узла дистрибутива, запустите это...
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.
спасибо - я видел подобные рекомендации. Кажется, это зависит от знания последней версии. есть ли вариант, который вытащит и установит последнюю версию?
Если вы используете deb.nodesource.com/setup_lts.x , вы получите версию LTS, а если вы используете deb.nodesource.com/setup_current.x, вы получите версию Current.
Вы не сможете установить последнюю версию npm на узле 12 (похоже, что это то, что поставляется с вашим базовым контейнером), возможно, вместо этого сделайте
npm install npm@6. Когда вы устанавливаете узел 20 с помощьюn, он также должен установить более новыйnpm. Однако я бы посоветовал вам установить узел 20 напрямую, а не черезn.