Хобрук: Ваш путь к мастерству в программировании

javascript службы запуска приложений Grails, начинающийся со строки NODE_ENV

При запуске приложения Grails 4 с помощью «grails run-app» каждый файл javascript, предоставляемый веб-сервером, начинается со строки:

var process = process || {env: {NODE_ENV: "development"}};

Эта строка не является частью исходного кода javascript и, вероятно, генерируется плагином конвейера ресурсов. Это чертовски сбивает с толку мои среды разработки (как intellij, так и VSCode) и разрушает обработку точек останова.

Кто-нибудь знает, как я могу избежать генерации этой строки заголовка «grails run-app»?

Некоторая информация о версии:

  • Грааль 4.0.5
  • актив-конвейер-грааль: 3.2.4
  • Java-версия 11.0.9.

Я создал приложение «helloworld», используя «grails create-app», и запустил его, ничего не изменяя, используя «grails run-app». Даже сейчас каждый обслуживаемый файл javascript имеет строку заголовка.


  • Хорошо, заголовок генерируется пакетом JsNodeInjectProcessor assets-pipeline-core, который прикрепляется с помощью assets.pipeline.JsEs6AssetFile, включенного в META-INF/asset.specs. Я не нашел документации, в которой я мог бы выбрать конвейер (asset.pipeline.JsAssetFile iso assets.pipeline.JsEs6AssetFile). Магия Грааля! 01.11.2020
  • Я не нашел документации, в которой я мог бы выбрать конвейер. Эти документы доступны по адресу asset-pipeline. com/manual/#extending. 02.11.2020
  • @JeffScottBrown в этом руководстве описывается, как писать собственные компоненты конвейера. Я ничего не мог найти о том, как выбрать конкретные компоненты. Я должен был быть более ясным об этом. Руководство, на которое вы указываете, было неоценимо для написания компонента, упомянутого в моем решении. 02.11.2020

Ответы:


1

Оказывается, вам нужно перезаписать конвейер ресурсов по умолчанию своим собственным конвейером. Ваш собственный конвейер исключит JsNodeInjectProcessor, который является виновником.

Определение собственного пайплайна включает следующие шаги:

  • измените свой build.gradle, чтобы все модули конвейера активов были доступны во время компиляции
  • создать MyJsAssetFile на основе JsAssertFile из пакета -core. В переменной процессоров исключите JsNodeInjectProcessor.
  • создайте файл main/resources/META-INF/asset-pipeline/asset.specs, исключив assets.pipeline.JsAssetFile и заменив его MyJsAssetFile

Это приведет к файлам javascript без строки заголовка, и, что наиболее важно, моя IDE Intellij сможет отлаживать мою логику javascript, встроенную в мое приложение grails.

02.11.2020
Новые материалы

Я собираюсь научить вас Python шаг за шагом
Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..

Альтернатива шаблону исходящих сообщений для архитектуры микросервисов
Познакомьтесь с двухэтапным сообщением В этой статье предлагается альтернативный шаблон для папки Исходящие : двухэтапное сообщение. Он основан не на очереди сообщений, а на..

React on Rails
Основное приложение Reverb - это всеми любимый монолит Rails. Он отлично обслуживает наш API и уровень просмотра трафика. По мере роста мы добавляли больше интерактивных элементов..

Что такое гибкие методологии разработки программного обеспечения
Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...

Ториго  — революция в игре Го
Наш следующий вызов против ИИ и для ИИ. Сможет ли он победить людей в обновленной игре Го? Обратите внимание, что в следующей статье AI означает искусственный интеллект, а Goban  —..

Простое развертывание моделей с помощью Mlflow — Упаковка классификатора обзоров продуктов NLP от HuggingFace
Как сохранить свои модели машинного обучения в формате с открытым исходным кодом с помощью MLFlow, чтобы позже получить возможность легкого развертывания. Сегодня модели упаковки имеют несколько..

Математика и интуиция - Часть 1
У каждой математической формулы есть доказательство. Часто эти доказательства слишком сложно понять, поскольку многие из них основаны на индукции, некоторые - на очень сложных наблюдениях, а..