Rails 6 + Webpacker 添加和使用yaml-loader
Rails 6 + Webpacker add and use yaml-loader
我正在尝试从我的项目中的一个包加载 YAML 文件,目前是这样的:
import SwaggerUI from 'swagger-ui';
const spec = require('./swagger-config.yaml');
const ui = SwaggerUI({
spec,
dom_id: '#swagger',
});
这是为了初始化 swagger-ui,我用给定的 dom_id
调用 SwaggerUI
没有问题,但是当我尝试添加规范文件时,渲染一些东西(这是功能)我收到这个:
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.
为了在包中加载这样的 YAML 文件,是否有与 Rails 相关的具体操作?
答案在回购的 README 中:
... For Webpack v4, you'll need to set the rule to have type: "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
我正在尝试从我的项目中的一个包加载 YAML 文件,目前是这样的:
import SwaggerUI from 'swagger-ui';
const spec = require('./swagger-config.yaml');
const ui = SwaggerUI({
spec,
dom_id: '#swagger',
});
这是为了初始化 swagger-ui,我用给定的 dom_id
调用 SwaggerUI
没有问题,但是当我尝试添加规范文件时,渲染一些东西(这是功能)我收到这个:
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.
为了在包中加载这样的 YAML 文件,是否有与 Rails 相关的具体操作?
答案在回购的 README 中:
... For Webpack v4, you'll need to set the rule to have type: "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