Используйте ramdisk для создания приложения Vaadin 14 под управлением Maven с использованием IntelliJ 2019.2? («Сбой компиляции веб-интерфейса») - PullRequest
0 голосов
/ 04 октября 2019

Обновление: ошибка

Я подал Билет № 6,629 . Определено, что должна быть ошибка, с некоторыми объясненными деталями.

Я оставляю этот Вопрос открытым, если у кого-то есть обходной путь.

tl; dr

Некоторая часть процесса сборки Vaadin 14, управляемой Maven, игнорирует параметр <build><directory> в моем файле POM Maven, что-то связанное с:

  • target
    • frontend
      • generated-flow-imports.js
      • package.json

Возможно, мне следует подать отчет об ошибке. Или есть решение / обходной путь?

Подробнее

Я использую Vaadin 14.0.7 или 14.1.0alpha2 для создания некоторых веб-приложений. Я хотел бы использовать ramdisk (он же RAM-диск) , чтобы ускорить процесс сборки, а также чтобы избежать износа моего флэш-накопителя.

С помощью этого Вопроса я могу смонтировать 1-гигабайтный виртуальный диск на MacOS Mojave на Mac mini.

diskutil partitionDisk $(hdiutil attach -nomount ram://2097152) 1 GPTFormat APFS 'RamDisk' '100%'

С этим Ответом , Я отредактировал мой POM-файл Maven, чтобы IntelliJ собирал с помощью папки target на виртуальном диске.

  • К элементу <properties> добавить:<buildDirectory>/Volumes/RamDisk/target</buildDirectory>
  • К элементу <build> добавить:
<directory>${buildDirectory}</directory>

После запуска Maven install я вижу, что сборка там прошла успешно со всеми ожидаемыми папками и файлом WAR.

Проблема возникает, когда я пытался запустить свой проект из IntelliJ, используя сервер Jetty в комплекте с IntelliJ, запустив из панели Maven элемент jetty:run. Я увидел большую часть ожидаемого результата в панели Run IntelliJ. Но после большинства строк webpack я получил ошибку Frontend compilation failed:

[webpack] INFO dev-webpack -                              build/webcomponentsjs/webcomponents-loader.js   6.13 KiB          [emitted]  
[webpack] INFO dev-webpack - 
[webpack] ERROR dev-webpack - ERROR in Entry module not found: Error: Can't resolve '/Volumes/RamDisk/target/frontend/generated-flow-imports.js' in '/Users/basilbourque/IdeaProjects/ticktock/frontend'
[webpack] ERROR dev-webpack - 
[webpack] ERROR dev-webpack - ERROR in Entry module not found: Error: Can't resolve '/Volumes/RamDisk/target/frontend/generated-flow-imports.js' in '/Users/basilbourque/IdeaProjects/ticktock/frontend'
[webpack] ERROR dev-webpack - ℹ 「wdm」: Failed to compile.
[webpack] ERROR dev-webpack - 
------------------ Frontend compilation failed. -----------------

Папка /Volumes/RamDisk/target/frontend/ действительно существует на виртуальном диске . Но файл generated-flow-imports.js не найден в.

Веб-приложение Vaadin действительно может работать на сервере. Когда я указываю свой веб-браузер на это веб-приложение, я вижу ожидаемую веб-страницу, которая в основном покрыта длинным сообщением об ошибке в поле с красным текстом, все о «ошибке Webpack».

Наramdisk, в папке target создается папка с именем frontend. Он содержит только один файл, package.json.

Снимок экрана виртуального диска:

screenshot of folder named ">

Появляется большая часть ожидаемого материалана виртуальном диске в папке target. Но на флеш-накопителе создается папка target, в которую вложена папка frontend с парой файлов: generated-flow-imports.js & package.json. есть некоторая часть сборки проекта Vaadin, которая игнорирует настройку <build><directory> в моем файле Maven POM.

Снимок экрана флэш-памяти:

screenshot of what is found on flash storage, in Vaadin web app project folder, showing a folder named target was created, along with a folder named frontend, inside of which are a pair of files (.js & .json)

Если я вернусь в POM, чтобы закомментировать мой 
<directory>${buildDirectory}</directory>, все снова хорошо, я могу запустить мое веб-приложение Vaadin через прилагаемую Jetty без какого-либо "внешнего интерфейса" или "webpack "ошибки.

➥ Что я могу сделать, чтобы фронтенд-компиляция работала с моим виртуальным диском?

...