Javascript Can';t开关。引导程序5 js未正确初始化?
我的Bootstrap 5.0.0-beta2实现有问题。我可以扩展导航栏和手风琴,但不能折叠它们 这似乎是js初始化的一个问题 因为如果我加载一个没有元素的页面,然后浏览到一个有元素的页面(我的页面不会重新加载,因为我正在使用),我可以展开和折叠它们。尽管在切换时这些错误会打印到控制台:Javascript Can';t开关。引导程序5 js未正确初始化?,javascript,ruby-on-rails,twitter-bootstrap,webpacker,bootstrap-5,Javascript,Ruby On Rails,Twitter Bootstrap,Webpacker,Bootstrap 5,我的Bootstrap 5.0.0-beta2实现有问题。我可以扩展导航栏和手风琴,但不能折叠它们 这似乎是js初始化的一个问题 因为如果我加载一个没有元素的页面,然后浏览到一个有元素的页面(我的页面不会重新加载,因为我正在使用),我可以展开和折叠它们。尽管在切换时这些错误会打印到控制台: Uncaught TypeError: No method named "toggle" at Function.collapseInterface (bootstrap.bund
Uncaught TypeError: No method named "toggle"
at Function.collapseInterface (bootstrap.bundle.js:1942)
at bootstrap.bundle.js:2001
at Array.forEach (<anonymous>)
at HTMLButtonElement.<anonymous> (bootstrap.bundle.js:1985)
at HTMLDocument.handler (bootstrap.bundle.js:414)
/*app/javascript/stylesheets/application.scss*/
@导入“~bootstrap/scss/bootstrap”;
//config/webpack/environment.js
const{environment}=require('@rails/webpacker')
const webpack=require('webpack')
environment.plugins.prepend(
“提供”,
新的webpack.ProvidePlugin({
Rails:“@Rails/ujs”,
Popper:['Popper.js','default']
})
)
module.exports=环境
此外,我还分享了一些图片,以显示在重新加载页面后切换时发生的转换
我的原始状态是这样的
切换导航栏时,它会按预期进行转换:
它最终处于展开状态:
但当我按下导航栏切换图标时,导航栏不会折叠。相反,它会在扩展状态(第二个映像)中转换,并最终进入扩展状态(第三个映像)。刚刚使用配置代码尝试了
引导5.0.0-beta2
,Rails 6.1
问题似乎在于加载bootstrap
对象的方式,即:
//冲突
window.bootstrap=require('bootstrap/dist/js/bootstrap.bundle.js')
您可以从以下位置使用const require
或import
:
const bootstrap=require('bootstrap')或从'bootstrap'导入引导将把引导的所有插件加载到引导对象上
const bootstrap=require('bootstrap')//或
从“引导”导入引导
或者,您可以全局加载bootstrap
对象:
//config/webpack/environment.js
const{environment}=require('@rails/webpacker')
const webpack=require('webpack')
environment.plugins.prepend(
“提供”,
新的webpack.ProvidePlugin({
Rails:“@Rails/ujs”,
Popper:['Popper.js','default'],
引导:['bootstrap']
})
)
module.exports=环境
尝试更改window.bootstrap=require(…)
使用import*from'bootstrap'
可能会对您有所帮助。Great@eux这两行代码都解决了问题。只有这样才会引起其他问题。如果我在自己的js文件中引用了bootstrap
,我会得到uncaughtreferenceerror:未定义bootstrap
。例如,我有一个像这样包含的文件:import“./javascripts/bootstrap\u toast”
并从该文件中运行new bootstrap.toast(my\u toast\u elm,{}).show()代码>。那么,我如何在更大范围内共享新的bootstrap
const呢?您可以像config/webpack/environment.js
中的“Popper”一样全局加载bootstrap
对象,查看更新答案的详细信息。很好,成功了。可以在10小时内奖励赏金:-)很乐意帮忙:)