В основном я использовал конфигурацию 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"