【发布时间】:2018-03-13 11:24:36
【问题描述】:
我使用这个库:https://github.com/hernansartorio/jquery-nice-select
并将这个插件包含在文件bootstrap.js中:
require('jquery-nice-select');
比我在应用程序文件中使用的app.js
app.js:
require('./bootstrap');
// ... code
const app = new Vue({
router,
components: {
App
},
template: '<app></app>',
mounted() {
$(document).find('select').niceSelect();
}
}).$mount('#app');
构建我的项目的配置webpack.mix.js:
mix
.js('resources/assets/js/app.js', 'public/js')
.sass('resources/assets/sass/vendors.scss', 'public/css')
.sass('resources/assets/sass/style.scss', 'public/css')
.extract(
[
'vue',
'vue-resource',
'vue-router',
'vue-scrollto',
'vue-meta'
],
'public/js/vue.js'
)
.extract(
[
'jquery',
'bootstrap-sass',
'jquery-nice-select',
'owl.carousel',
'jquery-parallax.js',
],
'public/js/vendor.js'
)
.autoload({
'jquery': ['$', 'jquery', 'jQuery', 'window.jQuery'],
'tether': ['window.Tether', 'Tether'],
})
;
但是,当您尝试使用 niceSelect 插件时,会出现以下错误:
vue.js:484 [Vue 警告]:挂载钩子错误:“TypeError: $(...).niceSelect 不是函数”
还有这个:
TypeError: $(...).niceSelect 不是函数
我不明白去哪里看,我在做什么是不对的?在我看来,只有给定的插件才会出现这样的问题,之前所有的插件总是连接并正常工作。
P.S.注意,错误不是函数没有声明,而是它不是函数。是的,所有公共JS的连接都正常完成:
<!-- code -->
<script src="{{ mix('/js/manifest.js') }}"></script>
<script src="{{ mix('/js/vendor.js') }}"></script>
<script src="{{ mix('/js/vue.js') }}"></script>
<script src="{{ mix('/js/app.js') }}"></script>
UPD:顺便说一句,指令中也会出现同样的错误。
export default {
directives: {
niceSelect: {
update(el) {
const $ = window.$;
$(el).niceSelect();
}
}
}
}
【问题讨论】:
-
如何加载插件?
-
是的,使用
require("jquery-nice-select")加载插件 -
这不是你加载插件的方式。您是否尝试按照说明进行操作? github.com/hernansartorio/jquery-nice-select#usage
-
这个插件通过Webpack打包所有厂商的js库,然后加载所有的js库。我不遵循说明,因为 niceSelect 从 NPM 存储库安装,但实际上这是相同的方式。如果你看到错误,它写在那里“
niceSelect is not a function”,而不是“niceSelect is not defined” -
尝试在 JavaScript 控制台中输入:
({}).f();错误说明了什么?
标签: javascript webpack jquery-plugins vue.js