前提・実現したいこと
現在gulp
及びbrowsify
を利用している、vue.js
プロジェクトにBootstrap-vue
を導入したところですが、以下警告が表示され困っています。
公式サイトやGitHubなどを見て解決を試みたのですが、解決できませんでしたので、お力添えをいただければ非常に助かります!
発生している問題・エラーメッセージ
[BootstrapVue warn]: Multiple instances of Vue detected! You may need to set up an alias for Vue in your bundler config. See: https://bootstrap-vue.org/docs#using-module-bundlers vue.runtime.common.dev.js:621
You are running Vue in development mode. Make sure to turn on production mode when deploying for production. See more tips at https://vuejs.org/guide/deployment.html VM43:146 serviceWorker registed. vue.common.dev.js:9054
You are running Vue in development mode. Make sure to turn on production mode when deploying for production. See more tips at https://vuejs.org/guide/deployment.html vue.runtime.common.dev.js:8406
原因
Bootstrap-vueの公式サイトに書いてある、Aliasing Vue importが原因だと思います。
If you are using a specific build of Vue (i.e. runtime-only vs. compiler + runtime), you will need to set up an alias to 'vue' in your bundler config to ensure that your project, BootstrapVue and PortalVue are all using the same build version of Vue. If you are seeing an error such as "$attr and $listeners is readonly", or "Multiple instances of Vue detected", then you will need to set up an alias.
こちらを見るに、Bootstrap-vueの内部的に reqire 'vue'
とvueを呼び出していますが、この呼び出しているvueがBootstrap-vueでは、 vue.runtime.common.js
であるのに対し、プロジェクトで参照しているのはvue.common.js
であるため、2つのvueインスタンスが見つかり、エラーが起こっているようです。
試したこと
公式サイトに書いてあるように import Vue from 'vue'
やrequire 'vue'
とした時にvue.common.js
を共通的に見に行ってほしいのですが、どうにもうまくいきません。
バンドラーにwebpack
を利用している場合、以下のように記載すれば解決するようですが、プロジェクトの都合でbrowesify
を利用する制限があります。
js
1// webpackの場合 2module.exports = { 3 // ... 4 resolve: { 5 alias: { 6 // If using the runtime only build 7 vue$: 'vue/dist/vue.runtime.esm.js' // 'vue/dist/vue.runtime.common.js' for webpack 1 8 // Or if using full build of Vue (runtime + compiler) 9 // vue$: 'vue/dist/vue.esm.js' // 'vue/dist/vue.common.js' for webpack 1 10 } 11 } 12}
[vue.jsの公式サイト][https://vuejs.org/v2/guide/installation.html#Runtime-Compiler-vs-Runtime-only]を参考にしながら、package.json
に以下のように記載したのですが、エラー内容も変わらず、複数のvueインスタンスが生成されてしまっているようです。
json
1{ 2 // ... 3 "browser": { 4 "vue": "vue/dist/vue.common.js" 5 } 6}
また、Bootstrap-vueのGitHubのissueを見てBootstrapVueの呼び出し方を変えて見ましたが、これまたエラー内容に変わり有りませんでした。
js
1// import Vue from 'vue' 2// import BootstrapVue from 'bootsrap-vue' 3// Vue.use(BootstrapVue) 4// ↑こちらとエラー内容に変わりなし 5Vue.use(require('bootstrap-vue/dist/bootstrap-vue.common.min'));
補足情報(FW/ツールのバージョンなど)
vue: 2.6.10
bootstrap-vue: 2.15.0
色々試したのですが、万策尽きたという感じです。
もし似たような問題を見たことがある、解決したことがあるという方はご意見をお聞かせください
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。