Rails 6 Webpacker добавляет и использует yaml-загрузчик

#ruby-on-rails #swagger-ui #ruby-on-rails-6 #webpacker

#ruby-on-rails #swagger-ui #ruby-on-rails-6 #webpacker

Вопрос:

Я пытаюсь загрузить файл YAML из одного из пакетов в моем проекте, в настоящее время это:

 import SwaggerUI from 'swagger-ui';

const spec = require('./swagger-config.yaml');

const ui = SwaggerUI({
  spec,
  dom_id: '#swagger',
});
  

Это делается для инициализации swagger-ui, и у меня нет проблем с вызовом SwaggerUI с данным dom_id , но когда я пытаюсь добавить файл спецификации, чтобы отобразить что-то (что является функциональностью) Я получаю это:

                        ERROR in ./app/javascript/packs/swagger-config.yaml 7:7
XX:53:17 webpacker.1 | Module parse failed: Unexpected token (7:7)
XX:53:17 webpacker.1 | You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
  

Если я добавлю yaml-loader в проект:

 // package.json
{
  ...
  "dependencies": {
    ...
    "yaml-loader": "^0.6.0"
  },
  "version": "0.1.0",
  "devDependencies": {
    "webpack-dev-server": "^3.11.0"
  }
}

// config/webpack/environment.js
const { environment } = require('@rails/webpacker')

const yamlLoader = {
  test: /.yaml$/,
  use: 'yaml-loader'
}

environment.loaders.append('yaml', yamlLoader)

module.exports = environment
  

затем я получаю это сообщение:

 xx:55:35 webpacker.1 | ERROR in ./app/javascript/packs/swagger-config.yaml 1:10
xx:55:35 webpacker.1 | Module parse failed: Unexpected token (1:10)
xx:55:35 webpacker.1 | File was processed with these loaders:
xx:55:35 webpacker.1 |  * ./node_modules/yaml-loader/index.js
xx:55:35 webpacker.1 | You may need an additional loader to handle the result of these loaders.
  

Есть ли что-то конкретное, что нужно сделать, связанное с Rails, чтобы загрузить такой файл YAML в пакет?

Комментарии:

1. Разве расширение файла не должно быть .yml вместо «.yaml»? Кроме того, посмотрите на первую строку в позиции столбца 10 для источника проблемы?

2. Если я попытаюсь переименовать расширение файла, я получу ту же ошибку (также обновляя регулярное выражение).

3. Странно то, что в нем говорится, что вам может понадобиться дополнительный загрузчик для обработки результатов этих загрузчиков… и он показывает файл YAML, но в формате JSON.

4. я вижу, что вы решили эту проблему. поздравляем!

5. Да, @BKSpurgeon, большое спасибо за помощь. Мне просто нужно было продолжать читать, этот веб-пакет / er — это совершенно новый мир.

Ответ №1:

Ответ находится в README из репозитория:

… Для Webpack v4 вам нужно установить правило, чтобы оно имело тип: «json»

при config/webpack/environment.js этом файл выглядит как:

 const { environment } = require('@rails/webpacker')

environment.loaders.append(
  'yaml', 
  { test: /.ya?ml$/,  use: 'yaml-loader', type: 'json' }
)

module.exports = environment