我有一个使用Rails 6作为API的React前端。 Webpacker配置为将app / javascript / media中的图像文件打包到app / javascript / packs中。据我所知,Webpack正在正确创建包。 packs文件夹包含我的bundle.js,bundle.js映射和webpack捆绑的.svg文件。 Bundle.js运行正常,但是当我尝试将图像导入组件时,出现路由错误,指出:
ActionController::RoutingError (No route matches [GET] "/img.svg")
我所见过的所有问题都提到,在没有进一步配置的情况下,Rails不会在生产模式下提供静态资产,但是我在开发模式下运行Rails,并运行webpack-dev-server。 这是我的webpack.config.js:
const path = require('path');
module.exports = {
context: __dirname,
entry: './frontend/app_name.jsx',
output: {
path: path.resolve(__dirname, 'app', 'javascript', 'packs'),
publicPath: path.resolve(__dirname, 'app', 'javascript', 'packs'),
filename: 'bundle.js'
},
resolve: {
extensions: ['.js', '.jsx', '*']
},
module: {
rules: [
{
test: /\.jsx?$/,
exclude: /(node_modules)/,
use: {
loader: 'babel-loader',
query: {
presets: ['@babel/env', '@babel/react']
}
},
},
{
test: /\.(png|svg)?$/,
loader: 'file-loader',
options: {
name: '[name].[ext]'
}
}
]
},
devtool: 'source-map'
};
更新:我的route.rb包含:
Rails.application.routes.draw do
root 'static#index'
namespace :api, defaults: { format: :json } do
resources :search, only: [:index]
end
end
我的静态控制器是
class StaticController < ApplicationController
def index
render :index
end
end
由webpacker编译的对静态资产的请求是否应该在一页应用程序中发送到后端?