Javascript Can';t开关。引导程序5 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

我的Bootstrap 5.0.0-beta2实现有问题。我可以扩展导航栏和手风琴,但不能折叠它们

这似乎是js初始化的一个问题

因为如果我加载一个没有元素的页面,然后浏览到一个有元素的页面(我的页面不会重新加载,因为我正在使用),我可以展开和折叠它们。尽管在切换时这些错误会打印到控制台:

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小时内奖励赏金:-)很乐意帮忙:)