Rails 6 / Webpacker无法将静态资产提供给React

时间:2019-10-15 19:19:10

标签: ruby-on-rails reactjs webpack ruby-on-rails-6

我有一个使用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编译的对静态资产的请求是否应该在一页应用程序中发送到后端?

0 个答案:

没有答案