Vaadin 14.0.5 не может найти 'npm' (Node.js) при локальном запуске в Tomcat, а не в Jetty - PullRequest
1 голос
/ 30 сентября 2019

Обновление:

Проблема возникает только при запуске в Tomcat из IntelliJ после выполнения Maven clean без Maven install.

Если я выполню Maven Install перед запуском моей внешней конфигурации Tomcat Run / Debug , то веб-приложение будет запущено правильно.

Таким образом, основная проблема, кажется,что этап «Сборка», указанный на вкладке Развертывание этой Конфигурации запуска / отладки , на самом деле не строится.

Как получить Запуск / отладкуКонфигурация настроек для фактической сборки проекта, поэтому мне не нужно помнить, чтобы каждый раз вручную нажимать на элемент Maven > Lifecycle > install?

image Run/Debug Configuration > Deployment tab">


Как описано в этом ответе , я добавил запись в Maven POM моего веб-приложения Vaadin 14.0.5 для установки зависимости для Node.js 10.6.3, которая поставляется в комплекте с npm инструмент, необходимый Ваадину.

Это работает при использовании сервера Jetty, указанного в том же файле POM. Я вижу журналы установки Node / npm при первом запуске. Я вижу журналы, проверяющие Node / npm и находящие его уже установленным при последующих запусках. Мое веб-приложение Vaadin успешно работает при выполнении с панели Maven в IntelliJ Ultimate 2019.2.3 через Plugins> jetty> jetty:run.

Когда я переключаюсь на конфигурацию времени выполнения с использованием Tomcat 9.0.26 локально, я получаю сообщение об ошибке, говорящее о том, что Vaadin не может найти инструмент npm .

Ранее в выводе консоли я вижу положительное сообщение о подключении к серверу.

Подключено к серверу

[2019-09-29 07: 27: 09,276] Артефакт простой и простой: война взорвана: Артефакт развертывается, пожалуйста, подождите ...

Но позже я получаю это сообщение об ошибке:

29-Sep-2019 19:27:11.758 SEVERE [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.StandardContext.startInternal Error during ServletContainerInitializer processing
    javax.servlet.ServletException: com.vaadin.flow.server.ExecutionFailedException: 

======================================================================================================
Failed to determine 'npm' tool.
Please install it either:
  - by following the https://nodejs.org/en/download/ guide to install it globally
  - or by running the frontend-maven-plugin goal to install it in this project:
  $ mvn com.github.eirslett:frontend-maven-plugin:1.7.6:install-node-and-npm -DnodeVersion="v10.16.0" 
======================================================================================================

Второй вариант (frontend-maven-plugin) это именно то, что я успешно настроил, как описано выше в начале этого Вопроса.

➥ Почему это работает с Jetty, но не с Tomcat?

➥ Могу ли я создать связанный узел.js / npm работает с Tomcat?

Я пытаюсь избежать глобальной установки Node.js на мой Mac.

Если вручную переместить файл WAR в Tomcat и вручную запустить Tomcat, веб-приложение Vaadin будет успешно запущено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...