#node.js #docker #node-modules #nodemon
#node.js #докер #модули узла #nodemon
Вопрос:
Мое приложение node доставляло мне некоторые проблемы, когда я добавлял некоторые крючки модели Bookshelfjs, и через некоторое время я пришел к выводу, что я мог / должен обновить версию узла
Я обновил с 14.8 до 15 во всех моих Dockerfile (ах), но мое основное приложение просто отказывается запускаться, говоря:
cross-env NODE_ENV=development nodemon server.js
/app/app-name/node_modules/.bin/../node/bin/node: 1: /app/app-name/node_modules/.bin/../node/bin/node: This: not found
Я попытался удалить nodemon
и развернуть контейнер приложения node
, однако это дало те же результаты. Я также убедился, что обновил версии пакетов, которые я использую, как я подозревал cross-env
, или nodemon
не работал с более новой версией узла (это тоже не сработало). Похоже, мне нужно создать / обновить символическую ссылку на то, где находится узел, но я не уверен, как подойти к этому с контейнером Docker, который не запускается.
Какие-либо подсказки, чтобы направить меня в правильном направлении здесь?
Комментарии:
1. Вы запускаете контейнер с томом для своего
node_modules
каталога? Содержимое этого тома никогда не будет обновляться и, вероятно, указывает на старую версию Node. Удаление подключений тома, которые перезаписывают код в изображении, может решить проблему.2. Да, поэтому я создавал анонимный том для node_modules (
- /app/app-name/node_modules
), чтобы локальная папка не была скопирована. Я попытался прокомментировать это и выполнить rebuild (docker-compose up -d --build --force-recreate
), но, возможно, я не все сделал в правильном порядке (напримерdocker-compose down -v
, или очистил существующие данные в Docker / Desktop перед восстановлением. С тех пор я сделал это, выполнил перестройку, и, похоже, проблема не устранена :/3. Кажется, я где-то ошибся на этом пути… При обновлении моего локального node.js версию (с использованием NVM), я каким-то образом фактически установил
node
как зависимость пакета в упомянутом приложении. Удаление этого и перестройка (без анонимного тома, включенного в docker-compose.yml) исправили мое приложение. Я оставлю громкость, поскольку это, похоже, предотвращает возникновение других подобных проблем. Спасибо @david-maze