Vite: Import file order changed leads to bootstrap loading before jquery

Created on 5 Jun 2020  路  7Comments  路  Source: vitejs/vite

Up to version 0.17.2, the following imports worked fine:

import "jquery";
import "bootstrap";

With later versions, including 0.20.3, leads to a TypeError: Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript. bootstrap.js.

See following console.log:

[vite] connecting... hmr:41:9
[vite] connected. hmr:63:21
TypeError: Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript. bootstrap.js:246:15
    jQueryDetection http://localhost:3000/@modules/bootstrap.js:246
    bootstrap http://localhost:3000/@modules/bootstrap.js:261
    bootstrap http://localhost:3000/@modules/bootstrap.js:12
    bootstrap http://localhost:3000/@modules/bootstrap.js:13
    createCommonjsModule http://localhost:3000/@modules/common/_commonjsHelpers-1b145e7f.js:14
    <anonymous> http://localhost:3000/@modules/bootstrap.js:5
    InnerModuleEvaluation self-hosted:1602
    InnerModuleEvaluation self-hosted:1602
    evaluation self-hosted:1569

System Info

  • required vite version: 0.20.3
  • required Operating System: Fedora 32
  • required Node version: 6.14.4

package.json

{
  "name": "wingman.www",
  "version": "0.0.0",
  "scripts": {
    "dev": "vite --debug",
    "build": "vite build"
  },
  "dependencies": {
    "@fortawesome/fontawesome-free": "^5.13.0",
    "bootstrap": "4.5.0",
    "d3": "^5.16.0",
    "jquery": "^3.5.1",
    "popper.js": "^1.16.1",
    "vue": "^3.0.0-beta.14",
    "vue-router": "^4.0.0-alpha.12",
    "vuex": "^4.0.0-beta.2",
    "weather-icons2": "^2.0.10"
  },
  "devDependencies": {
    "@vue/compiler-sfc": "^3.0.0-beta.14",
    "vite": "^0.20.3"
  }
}

main.js

import {createApp} from "vue";
import App from "./App.vue";
import store from "./store";
import router from "./router";

import "jquery";
import "bootstrap";
import "bootstrap/dist/css/bootstrap.min.css";
//import "@fortawesome/fontawesome-free/js/all.js";
// TODO: Replace fontawesome JS with CSS once the bug "Error processing font in library" is fixed https://github.com/vitejs/vite/issues/159
//import "@fortawesome/fontawesome-free/css/all.css";

import "./dataLink";

const app = createApp( App );
app.use( store );
app.use( router );
app.mount( '#app' );

Logs

/usr/bin/node /usr/lib/node_modules/npm/bin/npm-cli.js run dev --scripts-prepend-node-path=auto

> [email protected] dev /home/sylvain/git/com.enata.wingman.www/src/main/vue
> vite --debug

vite v0.20.3
  vite:config env mode: development +0ms
  vite:config env: {} +0ms
  vite:config config resolved in 2ms +1ms
  vite:optimize Hash is consistent. Skipping. Use --force to override. +0ms

  Dev server running at:
  > Local:    http://localhost:3000/
  > Network:  http://192.168.43.174:3000/

  vite:server server ready in 167ms. +0ms
  vite:hmr ws client connected +0ms
  vite:hmr         / imports /main.js +67ms
  vite:rewrite (skipped) / +0ms
  vite:rewrite /main.js: rewriting +72ms
  vite:rewrite     "vue" --> "/@modules/vue.js" +1ms
  vite:hmr         /main.js imports /@modules/vue.js +74ms
  vite:rewrite     "./App.vue" --> "/App.vue" +1ms
  vite:hmr         /main.js imports /App.vue +0ms
  vite:resolve (postfix) /home/sylvain/git/com.enata.wingman.www/src/main/vue/store -> /home/sylvain/git/com.enata.wingman.www/src/main/vue/store/index.js +0ms
  vite:rewrite     "./store" --> "/store/index.js" +0ms
  vite:hmr         /main.js imports /store/index.js +1ms
  vite:resolve (postfix) /home/sylvain/git/com.enata.wingman.www/src/main/vue/router -> /home/sylvain/git/com.enata.wingman.www/src/main/vue/router/index.js +1ms
  vite:rewrite     "./router" --> "/router/index.js" +1ms
  vite:hmr         /main.js imports /router/index.js +0ms
  vite:rewrite     "jquery" --> "/@modules/jquery.js" +0ms
  vite:hmr         /main.js imports /@modules/jquery.js +0ms
  vite:rewrite     "bootstrap" --> "/@modules/bootstrap.js" +1ms
  vite:hmr         /main.js imports /@modules/bootstrap.js +1ms
  vite:resolve failed to resolve package.json for bootstrap/dist/css/bootstrap.min.css +2ms
  vite:rewrite     "bootstrap/dist/css/bootstrap.min.css" --> "/@modules/bootstrap/dist/css/bootstrap.min.css?import" +1ms
  vite:hmr         /main.js imports /@modules/bootstrap/dist/css/bootstrap.min.css +1ms
  vite:resolve (postfix) /home/sylvain/git/com.enata.wingman.www/src/main/vue/dataLink -> /home/sylvain/git/com.enata.wingman.www/src/main/vue/dataLink.js +0ms
  vite:rewrite     "./dataLink" --> "/dataLink.js" +0ms
  vite:hmr         /main.js imports /dataLink.js +0ms
  vite:rewrite (skipped) /node_modules/weather-icons2/css/weather-icons.min.css +64ms
  vite:rewrite (skipped) /node_modules/@fortawesome/fontawesome-free/css/all.css +1ms
  vite:resolve (optimized) vue.js -> node_modules/.vite_opt_cache/vue.js +0ms
  vite:resolve (optimized) jquery.js -> node_modules/.vite_opt_cache/jquery.js +2ms
  vite:resolve (optimized) bootstrap.js -> node_modules/.vite_opt_cache/bootstrap.js +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/App.vue parsed in 93ms. +0ms
  vite:rewrite /App.vue: rewriting +102ms
  vite:rewrite     "vue" --> "/@modules/vue.js" +0ms
  vite:hmr         /App.vue imports /@modules/vue.js +167ms
  vite:resolve (node_module entry) vuex -> dist/vuex.esm-bundler.js +168ms
  vite:rewrite     "vuex" --> "/@modules/vuex/dist/vuex.esm-bundler.js" +1ms
  vite:hmr         /App.vue imports /@modules/vuex/dist/vuex.esm-bundler.js +1ms
  vite:rewrite     "./router" --> "/router/index.js" +0ms
  vite:hmr         /App.vue imports /router/index.js +0ms
  vite:rewrite     "./dataLink" --> "/dataLink.js" +0ms
  vite:hmr         /App.vue imports /dataLink.js +1ms
  vite:resolve (postfix) /home/sylvain/git/com.enata.wingman.www/src/main/vue/utils -> /home/sylvain/git/com.enata.wingman.www/src/main/vue/utils/index.js +1ms
  vite:rewrite     "./utils" --> "/utils/index.js" +2ms
  vite:hmr         /App.vue imports /utils/index.js +1ms
  vite:rewrite     "./components/ToggleBox.vue" --> "/components/ToggleBox.vue" +0ms
  vite:hmr         /App.vue imports /components/ToggleBox.vue +0ms
  vite:rewrite /@modules/vue.js: no imports found. +12ms
  vite:rewrite /@modules/jquery.js: rewriting +6ms
  vite:rewrite     "./common/_commonjsHelpers-1b145e7f.js" --> "/@modules/common/_commonjsHelpers-1b145e7f.js" +6ms
  vite:hmr         /@modules/jquery.js imports /@modules/common/_commonjsHelpers-1b145e7f.js +24ms
  vite:resolve (node_modules) bootstrap/dist/css/bootstrap.min.css -> node_modules/bootstrap/dist/css/bootstrap.min.css +129ms
  vite:rewrite /@modules/bootstrap.js: rewriting +8ms
  vite:rewrite     "./common/_commonjsHelpers-1b145e7f.js" --> "/@modules/common/_commonjsHelpers-1b145e7f.js" +3ms
  vite:hmr         /@modules/bootstrap.js imports /@modules/common/_commonjsHelpers-1b145e7f.js +11ms
  vite:rewrite     "./jquery.js" --> "/@modules/jquery.js" +0ms
  vite:hmr         /@modules/bootstrap.js imports /@modules/jquery.js +0ms
  vite:resolve (node_module entry) popper.js -> dist/esm/popper.js +37ms
  vite:rewrite     "popper.js" --> "/@modules/popper.js/dist/esm/popper.js" +1ms
  vite:hmr         /@modules/bootstrap.js imports /@modules/popper.js/dist/esm/popper.js +1ms
  vite:resolve (node_modules) vuex/dist/vuex.esm-bundler.js -> node_modules/vuex/dist/vuex.esm-bundler.js +11ms
  vite:rewrite /store/index.js: rewriting +4ms
  vite:resolve (node_module entry) vuex -> dist/vuex.esm-bundler.js +5ms
  vite:rewrite     "vuex" --> "/@modules/vuex/dist/vuex.esm-bundler.js" +1ms
  vite:hmr         /store/index.js imports /@modules/vuex/dist/vuex.esm-bundler.js +6ms
  vite:rewrite     "vue" --> "/@modules/vue.js" +1ms
  vite:hmr         /store/index.js imports /@modules/vue.js +0ms
  vite:rewrite /router/index.js: rewriting +0ms
  vite:resolve (node_module entry) vue-router -> dist/vue-router.esm-bundler.js +2ms
  vite:rewrite     "vue-router" --> "/@modules/vue-router/dist/vue-router.esm-bundler.js" +2ms
  vite:hmr         /router/index.js imports /@modules/vue-router/dist/vue-router.esm-bundler.js +2ms
  vite:rewrite     "../views/Dashboard.vue" --> "/views/Dashboard.vue" +0ms
  vite:hmr         /router/index.js imports /views/Dashboard.vue +0ms
  vite:rewrite     "../views/Map.vue" --> "/views/Map.vue" +0ms
  vite:hmr         /router/index.js imports /views/Map.vue +0ms
  vite:rewrite     "../views/FlyingMode.vue" --> "/views/FlyingMode.vue" +0ms
  vite:hmr         /router/index.js imports /views/FlyingMode.vue +0ms
  vite:rewrite     "../views/Trim.vue" --> "/views/Trim.vue" +1ms
  vite:hmr         /router/index.js imports /views/Trim.vue +1ms
  vite:rewrite     "../views/Maintenance.vue" --> "/views/Maintenance.vue" +0ms
  vite:hmr         /router/index.js imports /views/Maintenance.vue +0ms
  vite:rewrite     "../views/Manual.vue" --> "/views/Manual.vue" +0ms
  vite:hmr         /router/index.js imports /views/Manual.vue +0ms
  vite:rewrite     "../views/FullDataReporting.vue" --> "/views/FullDataReporting.vue" +0ms
  vite:hmr         /router/index.js imports /views/FullDataReporting.vue +0ms
  vite:rewrite     "../views/System.vue" --> "/views/System.vue" +1ms
  vite:hmr         /router/index.js imports /views/System.vue +1ms
  vite:rewrite /@modules/bootstrap/dist/css/bootstrap.min.css: rewriting +6ms
  vite:rewrite     no imports rewritten. +0ms
  vite:rewrite /@modules/vuex/dist/vuex.esm-bundler.js: rewriting +3ms
  vite:rewrite     "vue" --> "/@modules/vue.js" +0ms
  vite:hmr         /@modules/vuex/dist/vuex.esm-bundler.js imports /@modules/vue.js +10ms
  vite:rewrite (skipped) /vite/hmr +2ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/App.vue parse cache hit +65ms
  vite:sfc /App.vue style compiled in 20ms +20ms
  vite:rewrite (skipped) /App.vue?type=style&index=0 +21ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/App.vue parse cache hit +1ms
  vite:sfc /App.vue template compiled in 140ms. +140ms
  vite:rewrite (skipped) /App.vue?type=template +141ms
  vite:resolve (optimized) common/_commonjsHelpers-1b145e7f.js -> node_modules/.vite_opt_cache/common/_commonjsHelpers-1b145e7f.js +182ms
  vite:resolve (node_modules) vue-router/dist/vue-router.esm-bundler.js -> node_modules/vue-router/dist/vue-router.esm-bundler.js +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/ToggleBox.vue parsed in 7ms. +10ms
  vite:rewrite /components/ToggleBox.vue: rewriting +10ms
  vite:rewrite     "vue" --> "/@modules/vue.js" +0ms
  vite:hmr         /components/ToggleBox.vue imports /@modules/vue.js +173ms
  vite:rewrite /dataLink.js: rewriting +1ms
  vite:rewrite     "vue" --> "/@modules/vue.js" +0ms
  vite:hmr         /dataLink.js imports /@modules/vue.js +1ms
  vite:rewrite     "./store" --> "/store/index.js" +0ms
  vite:hmr         /dataLink.js imports /store/index.js +0ms
  vite:rewrite /@modules/common/_commonjsHelpers-1b145e7f.js: no imports found. +1ms
  vite:rewrite /@modules/vue-router/dist/vue-router.esm-bundler.js: rewriting +2ms
  vite:rewrite     "vue" --> "/@modules/vue.js" +2ms
  vite:hmr         /@modules/vue-router/dist/vue-router.esm-bundler.js imports /@modules/vue.js +5ms
  vite:rewrite /utils/index.js: no imports found. +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Dashboard.vue parsed in 19ms. +27ms
  vite:rewrite /views/Dashboard.vue: rewriting +22ms
  vite:rewrite     "vue" --> "/@modules/vue.js" +0ms
  vite:hmr         /views/Dashboard.vue imports /@modules/vue.js +23ms
  vite:resolve (node_module entry) vuex -> dist/vuex.esm-bundler.js +216ms
  vite:rewrite     "vuex" --> "/@modules/vuex/dist/vuex.esm-bundler.js" +1ms
  vite:hmr         /views/Dashboard.vue imports /@modules/vuex/dist/vuex.esm-bundler.js +1ms
  vite:rewrite     "../utils" --> "/utils/index.js" +0ms
  vite:hmr         /views/Dashboard.vue imports /utils/index.js +0ms
  vite:rewrite     "../components/CircularGauge.vue" --> "/components/CircularGauge.vue" +0ms
  vite:hmr         /views/Dashboard.vue imports /components/CircularGauge.vue +0ms
  vite:rewrite     "../components/MomentaryPushButton.vue" --> "/components/MomentaryPushButton.vue" +0ms
  vite:hmr         /views/Dashboard.vue imports /components/MomentaryPushButton.vue +1ms
  vite:rewrite     "../components/DelayedConfirmation.vue" --> "/components/DelayedConfirmation.vue" +1ms
  vite:hmr         /views/Dashboard.vue imports /components/DelayedConfirmation.vue +0ms
  vite:rewrite     "../components/HeadingGauge.vue" --> "/components/HeadingGauge.vue" +0ms
  vite:hmr         /views/Dashboard.vue imports /components/HeadingGauge.vue +0ms
  vite:rewrite     "../components/SpeedGauge.vue" --> "/components/SpeedGauge.vue" +0ms
  vite:hmr         /views/Dashboard.vue imports /components/SpeedGauge.vue +0ms
  vite:rewrite     "../components/PitchGauge.vue" --> "/components/PitchGauge.vue" +0ms
  vite:hmr         /views/Dashboard.vue imports /components/PitchGauge.vue +0ms
  vite:rewrite     "../components/FuelGauge.vue" --> "/components/FuelGauge.vue" +0ms
  vite:hmr         /views/Dashboard.vue imports /components/FuelGauge.vue +0ms
  vite:rewrite     "../components/ToggleBox.vue" --> "/components/ToggleBox.vue" +0ms
  vite:hmr         /views/Dashboard.vue imports /components/ToggleBox.vue +0ms
  vite:resolve (postfix) /home/sylvain/git/com.enata.wingman.www/src/main/vue/utils/suncalc -> /home/sylvain/git/com.enata.wingman.www/src/main/vue/utils/suncalc.js +1ms
  vite:rewrite     "../utils/suncalc" --> "/utils/suncalc.js" +1ms
  vite:hmr         /views/Dashboard.vue imports /utils/suncalc.js +1ms
  vite:resolve failed to resolve package.json for weather-icons2/css/weather-icons.css +1ms
  vite:rewrite     "weather-icons2/css/weather-icons.css" --> "/@modules/weather-icons2/css/weather-icons.css?import" +0ms
  vite:hmr         /views/Dashboard.vue imports /@modules/weather-icons2/css/weather-icons.css +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Map.vue parsed in 0ms. +7ms
  vite:rewrite /views/Map.vue: rewriting +3ms
  vite:rewrite     no imports rewritten. +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/FlyingMode.vue parsed in 8ms. +10ms
  vite:rewrite /views/FlyingMode.vue: rewriting +11ms
  vite:rewrite     "vuex" --> "/@modules/vuex/dist/vuex.esm-bundler.js" +0ms
  vite:hmr         /views/FlyingMode.vue imports /@modules/vuex/dist/vuex.esm-bundler.js +14ms
  vite:rewrite     "vue" --> "/@modules/vue.js" +0ms
  vite:hmr         /views/FlyingMode.vue imports /@modules/vue.js +0ms
  vite:rewrite     "../components/MomentaryPushButton.vue" --> "/components/MomentaryPushButton.vue" +0ms
  vite:hmr         /views/FlyingMode.vue imports /components/MomentaryPushButton.vue +0ms
  vite:resolve (postfix) /home/sylvain/git/com.enata.wingman.www/src/main/vue/utils/disableAtSpeed -> /home/sylvain/git/com.enata.wingman.www/src/main/vue/utils/disableAtSpeed.js +14ms
  vite:rewrite     "../utils/disableAtSpeed" --> "/utils/disableAtSpeed.js" +0ms
  vite:hmr         /views/FlyingMode.vue imports /utils/disableAtSpeed.js +0ms
  vite:rewrite     "d3" --> "/@modules/d3.js" +1ms
  vite:hmr         /views/FlyingMode.vue imports /@modules/d3.js +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Trim.vue parsed in 10ms. +14ms
  vite:rewrite /views/Trim.vue: rewriting +12ms
  vite:rewrite     "vuex" --> "/@modules/vuex/dist/vuex.esm-bundler.js" +0ms
  vite:hmr         /views/Trim.vue imports /@modules/vuex/dist/vuex.esm-bundler.js +12ms
  vite:rewrite     "vue" --> "/@modules/vue.js" +0ms
  vite:hmr         /views/Trim.vue imports /@modules/vue.js +0ms
  vite:rewrite     "../components/MomentaryPushButton.vue" --> "/components/MomentaryPushButton.vue" +0ms
  vite:hmr         /views/Trim.vue imports /components/MomentaryPushButton.vue +0ms
  vite:rewrite     "../components/HeadingGauge.vue" --> "/components/HeadingGauge.vue" +0ms
  vite:hmr         /views/Trim.vue imports /components/HeadingGauge.vue +1ms
  vite:rewrite     "../dataLink" --> "/dataLink.js" +1ms
  vite:hmr         /views/Trim.vue imports /dataLink.js +0ms
  vite:rewrite     "../utils/disableAtSpeed" --> "/utils/disableAtSpeed.js" +0ms
  vite:hmr         /views/Trim.vue imports /utils/disableAtSpeed.js +0ms
  vite:rewrite     "../utils/numpad.css" --> "/utils/numpad.css?import" +0ms
  vite:hmr         /views/Trim.vue imports /utils/numpad.css +0ms
  vite:rewrite     "../utils/numpad.js" --> "/utils/numpad.js" +0ms
  vite:hmr         /views/Trim.vue imports /utils/numpad.js +0ms
  vite:resolve (node_modules) popper.js/dist/esm/popper.js -> node_modules/popper.js/dist/esm/popper.js +69ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Maintenance.vue parsed in 1ms. +4ms
  vite:rewrite /views/Maintenance.vue: rewriting +3ms
  vite:rewrite     "vuex" --> "/@modules/vuex/dist/vuex.esm-bundler.js" +0ms
  vite:hmr         /views/Maintenance.vue imports /@modules/vuex/dist/vuex.esm-bundler.js +3ms
  vite:rewrite     "vue" --> "/@modules/vue.js" +0ms
  vite:hmr         /views/Maintenance.vue imports /@modules/vue.js +0ms
  vite:rewrite     "../utils" --> "/utils/index.js" +0ms
  vite:hmr         /views/Maintenance.vue imports /utils/index.js +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Manual.vue parsed in 23ms. +25ms
  vite:rewrite /views/Manual.vue: rewriting +25ms
  vite:rewrite     "../components/TouchScroller.vue" --> "/components/TouchScroller.vue" +0ms
  vite:hmr         /views/Manual.vue imports /components/TouchScroller.vue +25ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/ToggleBox.vue parse cache hit +2ms
  vite:sfc /components/ToggleBox.vue style compiled in 2ms +2ms
  vite:rewrite (skipped) /components/ToggleBox.vue?type=style&index=0 +3ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/FullDataReporting.vue parsed in 1ms. +2ms
  vite:rewrite /views/FullDataReporting.vue: rewriting +3ms
  vite:rewrite     "vuex" --> "/@modules/vuex/dist/vuex.esm-bundler.js" +0ms
  vite:hmr         /views/FullDataReporting.vue imports /@modules/vuex/dist/vuex.esm-bundler.js +6ms
  vite:rewrite     "vue" --> "/@modules/vue.js" +0ms
  vite:hmr         /views/FullDataReporting.vue imports /@modules/vue.js +0ms
  vite:rewrite     "../components/TouchScroller.vue" --> "/components/TouchScroller.vue" +0ms
  vite:hmr         /views/FullDataReporting.vue imports /components/TouchScroller.vue +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/ToggleBox.vue parse cache hit +2ms
  vite:sfc /components/ToggleBox.vue template compiled in 3ms. +3ms
  vite:rewrite (skipped) /components/ToggleBox.vue?type=template +4ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/System.vue parsed in 1ms. +2ms
  vite:rewrite /views/System.vue: rewriting +3ms
  vite:rewrite     "../components/TouchScroller.vue" --> "/components/TouchScroller.vue" +0ms
  vite:hmr         /views/System.vue imports /components/TouchScroller.vue +7ms
  vite:rewrite /@modules/popper.js/dist/esm/popper.js: no imports found. +3ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/CircularGauge.vue parsed in 2ms. +7ms
  vite:rewrite /components/CircularGauge.vue: rewriting +5ms
  vite:rewrite     "d3" --> "/@modules/d3.js" +0ms
  vite:hmr         /components/CircularGauge.vue imports /@modules/d3.js +8ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/HeadingGauge.vue parsed in 2ms. +5ms
  vite:rewrite /components/HeadingGauge.vue: rewriting +4ms
  vite:rewrite     no imports rewritten. +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/MomentaryPushButton.vue parsed in 1ms. +3ms
  vite:rewrite /components/MomentaryPushButton.vue: rewriting +3ms
  vite:rewrite     "vue" --> "/@modules/vue.js" +0ms
  vite:hmr         /components/MomentaryPushButton.vue imports /@modules/vue.js +7ms
  vite:resolve (node_module entry) vuex -> dist/vuex.esm-bundler.js +71ms
  vite:rewrite     "vuex" --> "/@modules/vuex/dist/vuex.esm-bundler.js" +1ms
  vite:hmr         /components/MomentaryPushButton.vue imports /@modules/vuex/dist/vuex.esm-bundler.js +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/DelayedConfirmation.vue parsed in 2ms. +4ms
  vite:rewrite /components/DelayedConfirmation.vue: rewriting +2ms
  vite:rewrite     "vue" --> "/@modules/vue.js" +0ms
  vite:hmr         /components/DelayedConfirmation.vue imports /@modules/vue.js +2ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/SpeedGauge.vue parsed in 3ms. +4ms
  vite:rewrite /components/SpeedGauge.vue: rewriting +5ms
  vite:rewrite     "vue" --> "/@modules/vue.js" +1ms
  vite:hmr         /components/SpeedGauge.vue imports /@modules/vue.js +6ms
  vite:rewrite     "vuex" --> "/@modules/vuex/dist/vuex.esm-bundler.js" +0ms
  vite:hmr         /components/SpeedGauge.vue imports /@modules/vuex/dist/vuex.esm-bundler.js +0ms
  vite:rewrite     "d3" --> "/@modules/d3.js" +0ms
  vite:hmr         /components/SpeedGauge.vue imports /@modules/d3.js +0ms
  vite:resolve (node_modules) weather-icons2/css/weather-icons.css -> node_modules/weather-icons2/css/weather-icons.css +66ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Dashboard.vue parse cache hit +4ms
  vite:sfc /views/Dashboard.vue style compiled in 2ms +2ms
  vite:rewrite (skipped) /views/Dashboard.vue?type=style&index=0 +4ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/PitchGauge.vue parsed in 11ms. +12ms
  vite:rewrite /components/PitchGauge.vue: rewriting +13ms
  vite:rewrite     no imports rewritten. +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Dashboard.vue parse cache hit +2ms
  vite:sfc /views/Dashboard.vue template compiled in 86ms. +86ms
  vite:rewrite (skipped) /views/Dashboard.vue?type=template +87ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Map.vue parse cache hit +2ms
  vite:sfc /views/Map.vue template compiled in 1ms. +1ms
  vite:rewrite (skipped) /views/Map.vue?type=template +2ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/FuelGauge.vue parsed in 3ms. +3ms
  vite:rewrite /components/FuelGauge.vue: rewriting +4ms
  vite:rewrite     "d3" --> "/@modules/d3.js" +0ms
  vite:hmr         /components/FuelGauge.vue imports /@modules/d3.js +111ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/FlyingMode.vue parse cache hit +2ms
  vite:sfc /views/FlyingMode.vue style compiled in 1ms +1ms
  vite:rewrite (skipped) /views/FlyingMode.vue?type=style&index=0 +2ms
  vite:resolve (optimized) d3.js -> node_modules/.vite_opt_cache/d3.js +112ms
  vite:rewrite /@modules/weather-icons2/css/weather-icons.css: rewriting +2ms
  vite:rewrite     no imports rewritten. +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/FlyingMode.vue parse cache hit +3ms
  vite:sfc /views/FlyingMode.vue template compiled in 17ms. +17ms
  vite:rewrite (skipped) /views/FlyingMode.vue?type=template +17ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Trim.vue parse cache hit +2ms
  vite:sfc /views/Trim.vue style compiled in 0ms +1ms
  vite:rewrite (skipped) /views/Trim.vue?type=style&index=0 +3ms
  vite:rewrite /@modules/d3.js: no imports found. +10ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Trim.vue parse cache hit +15ms
  vite:sfc /views/Trim.vue template compiled in 36ms. +37ms
  vite:rewrite (skipped) /views/Trim.vue?type=template +43ms
  vite:rewrite /utils/suncalc.js: no imports found. +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Maintenance.vue parse cache hit +2ms
  vite:sfc /views/Maintenance.vue template compiled in 3ms. +3ms
  vite:rewrite (skipped) /views/Maintenance.vue?type=template +3ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Manual.vue parse cache hit +2ms
  vite:sfc /views/Manual.vue style compiled in 1ms +1ms
  vite:rewrite (skipped) /views/Manual.vue?type=style&index=0 +3ms
  vite:rewrite /utils/disableAtSpeed.js: rewriting +0ms
  vite:rewrite     "vue" --> "/@modules/vue.js" +0ms
  vite:hmr         /utils/disableAtSpeed.js imports /@modules/vue.js +85ms
  vite:rewrite     "../store" --> "/store/index.js" +0ms
  vite:hmr         /utils/disableAtSpeed.js imports /store/index.js +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Manual.vue parse cache hit +1ms
  vite:sfc /views/Manual.vue template compiled in 35ms. +35ms
  vite:rewrite (skipped) /views/Manual.vue?type=template +37ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/FullDataReporting.vue parse cache hit +1ms
  vite:sfc /views/FullDataReporting.vue style compiled in 11ms +11ms
  vite:rewrite (skipped) /views/FullDataReporting.vue?type=style&index=0 +11ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/FullDataReporting.vue parse cache hit +1ms
  vite:sfc /views/FullDataReporting.vue template compiled in 4ms. +4ms
  vite:rewrite (skipped) /views/FullDataReporting.vue?type=template +6ms
  vite:rewrite /utils/numpad.css: rewriting +0ms
  vite:rewrite     no imports rewritten. +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/System.vue parse cache hit +2ms
  vite:sfc /views/System.vue template compiled in 4ms. +4ms
  vite:rewrite (skipped) /views/System.vue?type=template +5ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/System.vue parse cache hit +1ms
  vite:sfc /views/System.vue style compiled in 0ms +0ms
  vite:rewrite (skipped) /views/System.vue?type=style&index=0 +1ms
  vite:rewrite /utils/numpad.js: no imports found. +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/TouchScroller.vue parsed in 2ms. +3ms
  vite:rewrite /components/TouchScroller.vue: rewriting +2ms
  vite:rewrite     "vue" --> "/@modules/vue.js" +0ms
  vite:hmr         /components/TouchScroller.vue imports /@modules/vue.js +63ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/HeadingGauge.vue parse cache hit +1ms
  vite:sfc /components/HeadingGauge.vue style compiled in 1ms +1ms
  vite:rewrite (skipped) /components/HeadingGauge.vue?type=style&index=0 +2ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/HeadingGauge.vue parse cache hit +1ms
  vite:sfc /components/HeadingGauge.vue template compiled in 8ms. +8ms
  vite:rewrite (skipped) /components/HeadingGauge.vue?type=template +9ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/CircularGauge.vue parse cache hit +0ms
  vite:sfc /components/CircularGauge.vue style compiled in 1ms +1ms
  vite:rewrite (skipped) /components/CircularGauge.vue?type=style&index=0 +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/CircularGauge.vue parse cache hit +1ms
  vite:sfc /components/CircularGauge.vue template compiled in 5ms. +5ms
  vite:rewrite (skipped) /components/CircularGauge.vue?type=template +6ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/DelayedConfirmation.vue parse cache hit +1ms
  vite:sfc /components/DelayedConfirmation.vue style compiled in 1ms +1ms
  vite:rewrite (skipped) /components/DelayedConfirmation.vue?type=style&index=0 +2ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/DelayedConfirmation.vue parse cache hit +0ms
  vite:sfc /components/DelayedConfirmation.vue template compiled in 4ms. +5ms
  vite:rewrite (skipped) /components/DelayedConfirmation.vue?type=template +5ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/SpeedGauge.vue parse cache hit +1ms
  vite:sfc /components/SpeedGauge.vue style compiled in 1ms +1ms
  vite:rewrite (skipped) /components/SpeedGauge.vue?type=style&index=0 +2ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/SpeedGauge.vue parse cache hit +1ms
  vite:sfc /components/SpeedGauge.vue template compiled in 9ms. +9ms
  vite:rewrite (skipped) /components/SpeedGauge.vue?type=template +10ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/MomentaryPushButton.vue parse cache hit +1ms
  vite:sfc /components/MomentaryPushButton.vue style compiled in 1ms +1ms
  vite:rewrite (skipped) /components/MomentaryPushButton.vue?type=style&index=0 +2ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/MomentaryPushButton.vue parse cache hit +1ms
  vite:sfc /components/MomentaryPushButton.vue template compiled in 1ms. +1ms
  vite:rewrite (skipped) /components/MomentaryPushButton.vue?type=template +3ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/PitchGauge.vue parse cache hit +1ms
  vite:sfc /components/PitchGauge.vue style compiled in 4ms +4ms
  vite:rewrite (skipped) /components/PitchGauge.vue?type=style&index=0 +5ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/PitchGauge.vue parse cache hit +1ms
  vite:sfc /components/PitchGauge.vue template compiled in 42ms. +42ms
  vite:rewrite (skipped) /components/PitchGauge.vue?type=template +43ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/FuelGauge.vue parse cache hit +1ms
  vite:sfc /components/FuelGauge.vue style compiled in 2ms +3ms
  vite:rewrite (skipped) /components/FuelGauge.vue?type=style&index=0 +3ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/FuelGauge.vue parse cache hit +1ms
  vite:sfc /components/FuelGauge.vue template compiled in 6ms. +6ms
  vite:rewrite (skipped) /components/FuelGauge.vue?type=template +8ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/TouchScroller.vue parse cache hit +2ms
  vite:sfc /components/TouchScroller.vue style compiled in 0ms +0ms
  vite:rewrite (skipped) /components/TouchScroller.vue?type=style&index=0 +2ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/TouchScroller.vue parse cache hit +1ms
  vite:sfc /components/TouchScroller.vue template compiled in 1ms. +1ms
  vite:rewrite (skipped) /components/TouchScroller.vue?type=template +2ms
  vite:hmr ws client connected +105ms
  vite:rewrite (skipped) /static/favicon.ico +99ms
  vite:rewrite /: serving from cache +0ms
  vite:rewrite (skipped) / +2m
  vite:rewrite (skipped) /vite/hmr +76ms
  vite:rewrite (skipped) /node_modules/@fortawesome/fontawesome-free/css/all.css +1ms
  vite:rewrite (skipped) /node_modules/weather-icons2/css/weather-icons.min.css +1ms
  vite:rewrite (cached) /main.js +0ms
  vite:resolve (cached) vue.js -> node_modules/.vite_opt_cache/vue.js +2m
  vite:rewrite (cached) /@modules/vue.js +69ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/App.vue parse cache hit +2m
  vite:rewrite (cached) /App.vue +2ms
  vite:resolve (cached) bootstrap/dist/css/bootstrap.min.css -> node_modules/bootstrap/dist/css/bootstrap.min.css +5ms
  vite:rewrite (cached) /@modules/bootstrap/dist/css/bootstrap.min.css?import +4ms
  vite:resolve (cached) jquery.js -> node_modules/.vite_opt_cache/jquery.js +3ms
  vite:rewrite (cached) /@modules/jquery.js +2ms
  vite:resolve (cached) bootstrap.js -> node_modules/.vite_opt_cache/bootstrap.js +2ms
  vite:rewrite (cached) /@modules/bootstrap.js +3ms
  vite:rewrite (cached) /store/index.js +1ms
  vite:rewrite (cached) /router/index.js +1ms
  vite:rewrite (cached) /dataLink.js +0ms
  vite:resolve (cached) vuex/dist/vuex.esm-bundler.js -> node_modules/vuex/dist/vuex.esm-bundler.js +45ms
  vite:rewrite (cached) /@modules/vuex/dist/vuex.esm-bundler.js +42ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/ToggleBox.vue parse cache hit +55ms
  vite:rewrite (cached) /components/ToggleBox.vue +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/App.vue parse cache hit +0ms
  vite:sfc /App.vue style cache hit +0ms
  vite:rewrite (skipped) /App.vue?type=style&index=0 +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/App.vue parse cache hit +1ms
  vite:sfc /App.vue template cache hit +0ms
  vite:rewrite (skipped) /App.vue?type=template +1ms
  vite:resolve (cached) vue-router/dist/vue-router.esm-bundler.js -> node_modules/vue-router/dist/vue-router.esm-bundler.js +5ms
  vite:rewrite (cached) /@modules/vue-router/dist/vue-router.esm-bundler.js +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Map.vue parse cache hit +3ms
  vite:rewrite (cached) /views/Map.vue +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Trim.vue parse cache hit +1ms
  vite:rewrite (cached) /views/Trim.vue +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/FlyingMode.vue parse cache hit +0ms
  vite:rewrite (cached) /views/FlyingMode.vue +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Dashboard.vue parse cache hit +1ms
  vite:rewrite (cached) /views/Dashboard.vue +1ms
  vite:hmr ws client connected +2m
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Maintenance.vue parse cache hit +2ms
  vite:rewrite (cached) /views/Maintenance.vue +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Manual.vue parse cache hit +1ms
  vite:rewrite (cached) /views/Manual.vue +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/FullDataReporting.vue parse cache hit +0ms
  vite:rewrite (cached) /views/FullDataReporting.vue +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/System.vue parse cache hit +1ms
  vite:rewrite (cached) /views/System.vue +0ms
  vite:resolve (cached) common/_commonjsHelpers-1b145e7f.js -> node_modules/.vite_opt_cache/common/_commonjsHelpers-1b145e7f.js +8ms
  vite:rewrite (cached) /@modules/common/_commonjsHelpers-1b145e7f.js +1ms
  vite:resolve (cached) popper.js/dist/esm/popper.js -> node_modules/popper.js/dist/esm/popper.js +1ms
  vite:rewrite (cached) /@modules/popper.js/dist/esm/popper.js +1ms
  vite:rewrite (cached) /utils/index.js +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/ToggleBox.vue parse cache hit +111ms
  vite:sfc /components/ToggleBox.vue style cache hit +0ms
  vite:rewrite (skipped) /components/ToggleBox.vue?type=style&index=0 +108ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/ToggleBox.vue parse cache hit +1ms
  vite:sfc /components/ToggleBox.vue template cache hit +0ms
  vite:rewrite (skipped) /components/ToggleBox.vue?type=template +2ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Map.vue parse cache hit +1ms
  vite:sfc /views/Map.vue template cache hit +0ms
  vite:rewrite (skipped) /views/Map.vue?type=template +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/MomentaryPushButton.vue parse cache hit +0ms
  vite:rewrite (cached) /components/MomentaryPushButton.vue +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/HeadingGauge.vue parse cache hit +1ms
  vite:rewrite (cached) /components/HeadingGauge.vue +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Trim.vue parse cache hit +1ms
  vite:sfc /views/Trim.vue style cache hit +0ms
  vite:rewrite (skipped) /views/Trim.vue?type=style&index=0 +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Trim.vue parse cache hit +0ms
  vite:sfc /views/Trim.vue template cache hit +0ms
  vite:rewrite (skipped) /views/Trim.vue?type=template +0ms
  vite:resolve (cached) d3.js -> node_modules/.vite_opt_cache/d3.js +114ms
  vite:rewrite (cached) /@modules/d3.js +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/FlyingMode.vue parse cache hit +4ms
  vite:sfc /views/FlyingMode.vue style cache hit +0ms
  vite:rewrite (skipped) /views/FlyingMode.vue?type=style&index=0 +3ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/FlyingMode.vue parse cache hit +1ms
  vite:sfc /views/FlyingMode.vue template cache hit +0ms
  vite:rewrite (skipped) /views/FlyingMode.vue?type=template +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/DelayedConfirmation.vue parse cache hit +1ms
  vite:rewrite (cached) /components/DelayedConfirmation.vue +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/SpeedGauge.vue parse cache hit +0ms
  vite:rewrite (cached) /components/SpeedGauge.vue +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/CircularGauge.vue parse cache hit +1ms
  vite:rewrite (cached) /components/CircularGauge.vue +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/PitchGauge.vue parse cache hit +1ms
  vite:rewrite (cached) /components/PitchGauge.vue +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/FuelGauge.vue parse cache hit +1ms
  vite:rewrite (cached) /components/FuelGauge.vue +1ms
  vite:resolve (cached) weather-icons2/css/weather-icons.css -> node_modules/weather-icons2/css/weather-icons.css +8ms
  vite:rewrite (cached) /@modules/weather-icons2/css/weather-icons.css?import +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Dashboard.vue parse cache hit +1ms
  vite:sfc /views/Dashboard.vue style cache hit +1ms
  vite:rewrite (skipped) /views/Dashboard.vue?type=style&index=0 +1ms
  vite:rewrite (cached) /utils/numpad.css?import +0ms
  vite:rewrite (cached) /utils/disableAtSpeed.js +1ms
  vite:rewrite (cached) /utils/numpad.js +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Dashboard.vue parse cache hit +2ms
  vite:sfc /views/Dashboard.vue template cache hit +0ms
  vite:rewrite (skipped) /views/Dashboard.vue?type=template +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Maintenance.vue parse cache hit +0ms
  vite:sfc /views/Maintenance.vue template cache hit +1ms
  vite:rewrite (skipped) /views/Maintenance.vue?type=template +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/TouchScroller.vue parse cache hit +0ms
  vite:rewrite (cached) /components/TouchScroller.vue +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Manual.vue parse cache hit +1ms
  vite:sfc /views/Manual.vue style cache hit +0ms
  vite:rewrite (skipped) /views/Manual.vue?type=style&index=0 +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/Manual.vue parse cache hit +0ms
  vite:sfc /views/Manual.vue template cache hit +0ms
  vite:rewrite (skipped) /views/Manual.vue?type=template +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/FullDataReporting.vue parse cache hit +1ms
  vite:sfc /views/FullDataReporting.vue style cache hit +0ms
  vite:rewrite (skipped) /views/FullDataReporting.vue?type=style&index=0 +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/FullDataReporting.vue parse cache hit +1ms
  vite:sfc /views/FullDataReporting.vue template cache hit +0ms
  vite:rewrite (skipped) /views/FullDataReporting.vue?type=template +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/System.vue parse cache hit +0ms
  vite:sfc /views/System.vue style cache hit +0ms
  vite:rewrite (skipped) /views/System.vue?type=style&index=0 +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/views/System.vue parse cache hit +1ms
  vite:sfc /views/System.vue template cache hit +0ms
  vite:rewrite (skipped) /views/System.vue?type=template +1ms
  vite:rewrite (cached) /utils/suncalc.js +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/MomentaryPushButton.vue parse cache hit +97ms
  vite:sfc /components/MomentaryPushButton.vue style cache hit +1ms
  vite:rewrite (skipped) /components/MomentaryPushButton.vue?type=style&index=0 +98ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/MomentaryPushButton.vue parse cache hit +0ms
  vite:sfc /components/MomentaryPushButton.vue template cache hit +0ms
  vite:rewrite (skipped) /components/MomentaryPushButton.vue?type=template +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/SpeedGauge.vue parse cache hit +1ms
  vite:sfc /components/SpeedGauge.vue style cache hit +0ms
  vite:rewrite (skipped) /components/SpeedGauge.vue?type=style&index=0 +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/SpeedGauge.vue parse cache hit +0ms
  vite:sfc /components/SpeedGauge.vue template cache hit +0ms
  vite:rewrite (skipped) /components/SpeedGauge.vue?type=template +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/HeadingGauge.vue parse cache hit +1ms
  vite:sfc /components/HeadingGauge.vue style cache hit +0ms
  vite:rewrite (skipped) /components/HeadingGauge.vue?type=style&index=0 +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/HeadingGauge.vue parse cache hit +0ms
  vite:sfc /components/HeadingGauge.vue template cache hit +0ms
  vite:rewrite (skipped) /components/HeadingGauge.vue?type=template +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/DelayedConfirmation.vue parse cache hit +0ms
  vite:sfc /components/DelayedConfirmation.vue style cache hit +1ms
  vite:rewrite (skipped) /components/DelayedConfirmation.vue?type=style&index=0 +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/DelayedConfirmation.vue parse cache hit +0ms
  vite:sfc /components/DelayedConfirmation.vue template cache hit +0ms
  vite:rewrite (skipped) /components/DelayedConfirmation.vue?type=template +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/CircularGauge.vue parse cache hit +1ms
  vite:sfc /components/CircularGauge.vue style cache hit +0ms
  vite:rewrite (skipped) /components/CircularGauge.vue?type=style&index=0 +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/CircularGauge.vue parse cache hit +0ms
  vite:sfc /components/CircularGauge.vue template cache hit +0ms
  vite:rewrite (skipped) /components/CircularGauge.vue?type=template +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/PitchGauge.vue parse cache hit +1ms
  vite:sfc /components/PitchGauge.vue style cache hit +0ms
  vite:rewrite (skipped) /components/PitchGauge.vue?type=style&index=0 +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/PitchGauge.vue parse cache hit +0ms
  vite:sfc /components/PitchGauge.vue template cache hit +0ms
  vite:rewrite (skipped) /components/PitchGauge.vue?type=template +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/FuelGauge.vue parse cache hit +1ms
  vite:sfc /components/FuelGauge.vue style cache hit +0ms
  vite:rewrite (skipped) /components/FuelGauge.vue?type=style&index=0 +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/FuelGauge.vue parse cache hit +0ms
  vite:sfc /components/FuelGauge.vue template cache hit +0ms
  vite:rewrite (skipped) /components/FuelGauge.vue?type=template +0ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/TouchScroller.vue parse cache hit +1ms
  vite:sfc /components/TouchScroller.vue style cache hit +0ms
  vite:rewrite (skipped) /components/TouchScroller.vue?type=style&index=0 +1ms
  vite:sfc /home/sylvain/git/com.enata.wingman.www/src/main/vue/components/TouchScroller.vue parse cache hit +0ms
  vite:sfc /components/TouchScroller.vue template cache hit +0ms
  vite:rewrite (skipped) /components/TouchScroller.vue?type=template +0ms
  vite:rewrite (skipped) /static/favicon.ico +142ms
pending triage

Most helpful comment

This is not related to import order. This is because jQuery when imported in an ESM context considers itself in non-global mode and therefore does not put $ on window, but bootstrap is eagerly initialized on import and expects $ to be available on window.

This is unfortunately a case where jQuery and Bootstrap were designed without ESM in mind so they rely on implicit global coupling to work. The workaround would be simply excluding jquery with optimizeDeps.exclude and include it in your page via a normal script tag so it's synchronously exposed on window before your application code.

Actually, the problem is deeper in that Bootstrap uses typeof $ === 'undefined' instead of window.$ to check for jQuery presence, which does not work in an ESM context. So you will have to include both via normal script tags.

Better yet, I would suggest moving on from jQuery and Bootstrap and look for some modern alternatives...

All 7 comments

To be clear, the problem started with version 0.18.0.

Try to put jquery into optimizeDeps.exclude in the config file, to avoid being bundled in advance.

This is not related to import order. This is because jQuery when imported in an ESM context considers itself in non-global mode and therefore does not put $ on window, but bootstrap is eagerly initialized on import and expects $ to be available on window.

This is unfortunately a case where jQuery and Bootstrap were designed without ESM in mind so they rely on implicit global coupling to work. The workaround would be simply excluding jquery with optimizeDeps.exclude and include it in your page via a normal script tag so it's synchronously exposed on window before your application code.

Actually, the problem is deeper in that Bootstrap uses typeof $ === 'undefined' instead of window.$ to check for jQuery presence, which does not work in an ESM context. So you will have to include both via normal script tags.

Better yet, I would suggest moving on from jQuery and Bootstrap and look for some modern alternatives...

Importing directly fixes the problem.

It doesn't seem to require anything in optimizeDeps.exclude.

I would be glad to remove jquery, but bootstrap is more challenging.
Hopefully v5 will be compliant.

Thank you for your help.

I did some more digging and actually this seems to be caused by a bug in @rollup/plugin-commonjs. There is already an open issue tracking the bug: https://github.com/rollup/plugins/issues/411

If that's fixed it should actually work.

Great. Thank you again.

Also, good news, bootstrap 5 will not require jquery.

@svieujot Can you show a full example of your code? Because I have been get some problems about vue-router

Was this page helpful?
0 / 5 - 0 ratings