如何在Rails 6 Webpacker中配置jQuery第三方插件?已安装但不生效
解决Rails 6中jQuery和Bootstrap无法正常工作的问题
嘿,我一眼就揪出问题啦——你给根本不需要.start()方法的第三方库(jQuery、Bootstrap这类)错误地加了这个调用,这就是它们失效的核心原因!
问题分析
在Rails 6的Webpacker体系里,只有Rails官方提供的特定模块(比如@rails/ujs、turbolinks、@rails/activestorage)需要通过.start()触发初始化逻辑。而像jQuery、Bootstrap这类第三方库,只需要直接引入就行,它们本身并没有.start()这个方法,强行调用会导致JS报错,进而中断整个资源加载流程。
修正后的application.js代码
// application.js require("@rails/ujs").start() require("turbolinks").start() require("@rails/activestorage").start() require('jquery') require('jquery_ujs') require('bootstrap-daterangepicker') require("custom/custom").start() require("bootstrap") require("channels")
额外注意事项
- 严格遵守引入顺序:Bootstrap依赖jQuery,所以一定要确保
jquery在bootstrap之前引入,不然Bootstrap会找不到依赖直接罢工。 - 全局暴露jQuery(可选但推荐):如果你的自定义代码或某些插件依赖全局的
$或jQuery变量,需要修改Webpack配置把jQuery暴露到全局。编辑config/webpack/environment.js:const { environment } = require('@rails/webpacker') // 添加以下代码 const webpack = require('webpack') environment.plugins.prepend('Provide', new webpack.ProvidePlugin({ $: 'jquery/src/jquery', jQuery: 'jquery/src/jquery' }) ) module.exports = environment - 验证依赖安装完整性:确保所有依赖都正确安装,执行命令确认:
如果有缺失,重新安装:npm list jquery bootstrap jquery-ujsnpm install jquery bootstrap jquery-ujs --save
做完这些修改后,重启Rails服务器和Webpack开发服务器,jQuery和Bootstrap应该就能正常工作啦!
内容的提问来源于stack exchange,提问作者uzaif
相关产品推荐
相关产品推荐

