#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