Обновление:
Проблема возникает только при запуске в Tomcat из IntelliJ после выполнения Maven clean
без Maven install
.
Если я выполню Maven Install
перед запуском моей внешней конфигурации Tomcat Run / Debug , то веб-приложение будет запущено правильно.
Таким образом, основная проблема, кажется,что этап «Сборка», указанный на вкладке Развертывание этой Конфигурации запуска / отладки , на самом деле не строится.
Как получить Запуск / отладкуКонфигурация настроек для фактической сборки проекта, поэтому мне не нужно помнить, чтобы каждый раз вручную нажимать на элемент Maven > Lifecycle > install
?
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 будет успешно запущено.