Rails 6 + Webpacker: Uncaught TypeError: $(...).select2 is not a function
Rails 6 + Webpacker: Uncaught TypeError: $(...).select2 is not a function
我试图让 select2 在我的应用程序中工作,但无法做到。我已经通过 yarn add select2
添加了它。下面是我的代码
javascript/packs/application.js
// This file is automatically compiled by Webpack, along with any other files
// present in this directory. You're encouraged to place your actual application logic in
// a relevant structure within app/javascript and only use these pack files to reference
// that code so it'll be compiled.
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require("jquery")
require("bootstrap")
require("tempusdominus-bootstrap-4")
require("moment/locale/ja")
require('select2')
// stylesheets
require("../stylesheets/application.scss")
import "@fortawesome/fontawesome-free/css/all.css";
import "./owl.carousel.min.js";
import 'select2';
import 'select2/dist/css/select2.css';
$(document).ready(function(){
$('.customers-dropdown').select2();
$("select").change(function(event) {
$("#extra_price").html(formatCurrency($("#extra_" + $(".select").val()).html()));
computetotal(event);
});
$('#inlineDatepicker').datetimepicker({
inline: true,
sideBySide: false,
format: 'L',
useCurrent: false,
defaultDate: $('#weekStardate').val(),
});
$("#inlineDatepicker").on("change.datetimepicker", ({date, oldDate}) => {
var fdate = moment(date)
$('#weekStardate').val(fdate.format("D/M/YYYY"))
})
});
package.json
{
"name": "rails_6_devise_example",
"private": true,
"dependencies": {
"@fortawesome/fontawesome-free": "^5.14.0",
"@rails/actioncable": "^6.0.0-alpha",
"@rails/activestorage": "^6.0.0-alpha",
"@rails/ujs": "^6.0.0-alpha",
"@rails/webpacker": "^5.2.1",
"bootstrap": "^4.5.2",
"bootstrap-datepicker": "^1.9.0",
"jquery": "^3.5.1",
"moment": "^2.27.0",
"node-sass": "^4.12",
"popper.js": "^1.16.1",
"rails-ujs": "^5.2.4-3",
"select2": "^4.1.0-rc.0",
"tempusdominus-bootstrap-4": "^5.1.2",
"turbolinks": "^5.2.0"
},
"version": "0.1.0",
"devDependencies": {
"webpack-dev-server": "^3.8.1"
}
}
我得到 Uncaught TypeError: $(...).select2 is not a function
。我查看了很多帖子,按照建议,我尝试在 import 'select2';
上方添加 import $ from 'jquery';
这有效,但会破坏 datetimepicker 导致 Uncaught TypeError: jquery__WEBPACK_IMPORTED_MODULE_2___default(...)(...).datetimepicker is not a function
我不知道发生了什么。
非常感谢任何帮助,谢谢!
我很快就准备好了代码,它运行良好。我刚刚将其添加到插件中:
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
'window.jQuery': 'jquery',
moment: 'moment'
})
我也更改了顺序,因为那是 turbolink 想要的 ;)
require("jquery")
require("bootstrap")
require("tempusdominus-bootstrap-4")
require("moment/locale/ja")
require("turbolinks").start()
require('select2')
当然有一些错误,但我想念 formatCurrency
但最重要的事情是有效的:)
我试图让 select2 在我的应用程序中工作,但无法做到。我已经通过 yarn add select2
添加了它。下面是我的代码
javascript/packs/application.js
// This file is automatically compiled by Webpack, along with any other files
// present in this directory. You're encouraged to place your actual application logic in
// a relevant structure within app/javascript and only use these pack files to reference
// that code so it'll be compiled.
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require("jquery")
require("bootstrap")
require("tempusdominus-bootstrap-4")
require("moment/locale/ja")
require('select2')
// stylesheets
require("../stylesheets/application.scss")
import "@fortawesome/fontawesome-free/css/all.css";
import "./owl.carousel.min.js";
import 'select2';
import 'select2/dist/css/select2.css';
$(document).ready(function(){
$('.customers-dropdown').select2();
$("select").change(function(event) {
$("#extra_price").html(formatCurrency($("#extra_" + $(".select").val()).html()));
computetotal(event);
});
$('#inlineDatepicker').datetimepicker({
inline: true,
sideBySide: false,
format: 'L',
useCurrent: false,
defaultDate: $('#weekStardate').val(),
});
$("#inlineDatepicker").on("change.datetimepicker", ({date, oldDate}) => {
var fdate = moment(date)
$('#weekStardate').val(fdate.format("D/M/YYYY"))
})
});
package.json
{
"name": "rails_6_devise_example",
"private": true,
"dependencies": {
"@fortawesome/fontawesome-free": "^5.14.0",
"@rails/actioncable": "^6.0.0-alpha",
"@rails/activestorage": "^6.0.0-alpha",
"@rails/ujs": "^6.0.0-alpha",
"@rails/webpacker": "^5.2.1",
"bootstrap": "^4.5.2",
"bootstrap-datepicker": "^1.9.0",
"jquery": "^3.5.1",
"moment": "^2.27.0",
"node-sass": "^4.12",
"popper.js": "^1.16.1",
"rails-ujs": "^5.2.4-3",
"select2": "^4.1.0-rc.0",
"tempusdominus-bootstrap-4": "^5.1.2",
"turbolinks": "^5.2.0"
},
"version": "0.1.0",
"devDependencies": {
"webpack-dev-server": "^3.8.1"
}
}
我得到 Uncaught TypeError: $(...).select2 is not a function
。我查看了很多帖子,按照建议,我尝试在 import 'select2';
上方添加 import $ from 'jquery';
这有效,但会破坏 datetimepicker 导致 Uncaught TypeError: jquery__WEBPACK_IMPORTED_MODULE_2___default(...)(...).datetimepicker is not a function
我不知道发生了什么。
非常感谢任何帮助,谢谢!
我很快就准备好了代码,它运行良好。我刚刚将其添加到插件中:
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
'window.jQuery': 'jquery',
moment: 'moment'
})
我也更改了顺序,因为那是 turbolink 想要的 ;)
require("jquery")
require("bootstrap")
require("tempusdominus-bootstrap-4")
require("moment/locale/ja")
require("turbolinks").start()
require('select2')
当然有一些错误,但我想念 formatCurrency
但最重要的事情是有效的:)