Отпечатки рельсов Webpack не работают, как задумано - PullRequest
0 голосов
/ 10 марта 2019

В основном я использовал конфигурацию vanilla Webpack с Vue.js.Я пытался разыскать то, что сломало это, но мои отпечатки пальцев, кажется, больше не работают хорошо.Каждый раз, когда я обновляю один из компонентов, пакет будет перезагружаться, как и следовало ожидать.

Проблема в том, что на производстве браузер, похоже, больше об этом не знает.Поэтому он попытается использовать старый пакет, не найдет его и не вылетит из моего приложения.Только очистив кэш, чтобы он снова загрузил все пакеты, он получит пакет с новым отпечатком.

Конфигурация веб-пакета

const webpack = require('webpack')
const { environment } = require('@rails/webpacker')
const vue =  require('./loaders/vue')
const { VueLoaderPlugin } = require('vue-loader')

const additionalConfig = {
  plugins: [
    new webpack.optimize.CommonsChunkPlugin({
        name: 'vendor',
        filename: 'vendor.js',
        minChunks: 3,
    }),
  ],
  module: {
    rules: [
      {
        test: /\.pug$/,
        loader: 'pug-plain-loader'
      }
    ]
  },
  output: {
    sourceMapFilename: '[name].js.map',
  },
  devtool: 'source-map',
}

environment.config.merge(additionalConfig);
environment.loaders.append('vue', vue)
module.exports = environment

Похоже, что Rails по умолчанию все проверяет, поэтому янет ручной настройки в output.Но я тоже попробовал, без заметной разницы.

Один из пакетов

import 'element-ui/lib/theme-chalk/index.css';
import 'element-ui/lib/theme-chalk/display.css';
import 'flexboxgrid/css/flexboxgrid.css';
import 'ionicons/dist/scss/ionicons.scss';

import Vue from 'vue/dist/vue.esm';

import ElementUI from 'element-ui';
import locale from 'element-ui/lib/locale/lang/en';

import UserOnboarding from '../components/sessions/TheOnboarding.vue';
import TopNavigation from '../components/navigation/TheTopNavigation.vue';

import { store } from '../store';

Vue.use(ElementUI, { locale });

const app = new Vue({
  el: '#app',
  store,
  mounted() {
    var selector = document.querySelector("#app");

    if (selector) {
      store.commit('base_states/authenticate',
        JSON.parse(selector.dataset.signedIn)
      );
    }
  },
  components: { UserOnboarding, TopNavigation },
});

Пример исключения

ActionController::RoutingError: No route matches [GET] "/packs/landing_page-dbab12fce266dd6c1529.js"
...