gpt4 book ai didi

webpack - Rails 6、webpack 和tippy.js 给出 "tippy is not defined"- 我在哪里调用tippy() 函数?

转载 作者:行者123 更新时间:2023-12-04 00:18:43 24 4
gpt4 key购买 nike

我对使用 Webpack 和 Rails 比较陌生。我正在尝试安装 tippy.js在 Rails 6 应用程序上,但我无法访问 View 。 (如果我只是将tippy.js CDN 包含在 View 中的脚本标记中,我可以让它工作,但我无法通过使用webpack/yarn 让它工作。)

根据tippy.js instructions ,我已经用 yarn 安装了tippy.js。我的 package.json 文件:

{
"//": [
"moment - used in time_zones",
"popper.js - needed for bootstrap"
],
"dependencies": {
"@rails/ujs": "^6.0.3-1",
"@rails/webpacker": "5.1.1",
"bootstrap": "^4.5.0",
"jquery": "^3.5.1",
"jquery-ui": "^1.12.1",
"jquery-ujs": "^1.2.2",
"moment": "^2.26.0",
"popper.js": "^1.16.1",
"tippy.js": "^6.2.3",
"webpack": "^4.43.0"
},
"devDependencies": {
"webpack-dev-server": "^3.11.0"
},
"resolutions": {}
}

然后说明要导入tippy及其CSS,所以我在app/javascript/packs/application.js中做到了:

import "core-js/stable";

require("@rails/ujs").start();
require("jquery");

import tippy from "tippy.js";
import 'tippy.js/dist/tippy.css';
console.log("loaded tippy");

然后,在我的 index.html.erb View 中,我关注他们的 creation创建示例按钮的示例,并且根据他们的nothing is working FAQ , 在正文末尾调用tippy:

<button data-tippy-content="Tooltip">Text</button>

...

<script>
tippy('[data-tippy-content]');
</script>

但是,我没有得到工具提示,并且在控制台中,对于包含 tippy('[data-tippy-content]'); 的行,我得到“未捕获的 ReferenceError:tippy 未定义”; .

我尝试过的事情:

将 Tippy 放入 config/webpack/environment.js 中的 ProvidePlugin

我必须这样做才能让 jQuery 工作,所以我想我可能需要为 tippy.js 做类似的事情:

const { environment } = require('@rails/webpacker')

const webpack = require('webpack')
environment.plugins.prepend('Provide',
new webpack.ProvidePlugin({
$: 'jquery/src/jquery',
jQuery: 'jquery/src/jquery',
tippy: 'tippy.js'
})
)

module.exports = environment

没有改变任何东西;在我看来仍然有 ReferenceError 。我怀疑我在这里可能做错了什么;我可以找到一堆关于如何为 jQuery 提供插件的示例,但在网上找不到太多其他示例。

从 View 中移除 tippy('[data-tippy-content]'); 并将其放入 app/javascript/packs/application.js

import "core-js/stable";

require("@rails/ujs").start();
require("jquery");

import tippy from "tippy.js";
import 'tippy.js/dist/tippy.css';
tippy('[data-tippy-content]');
console.log("loaded tippy");

我不再收到 ReferenceError,但工具提示也不起作用。所以在某种程度上,tippy 并没有以 View 识别的任何方式被初始化。

使用他们 nothing is working FAQ 中的确切 CDN 示例在 View 中:

<body>
<button>Text</button>

<script src="https://unpkg.com/@popperjs/core@2"></script>
<script src="https://unpkg.com/tippy.js@6"></script>
<script>
tippy('button', {content: 'tooltip'});
</script>
</body>

有效——我得到了工具提示并且没有控制台错误——但它破坏了使用 webpack 必须在我的 View 中包含 CDN 脚本标签的全部意义。


我应该如何以及在哪里调用 tippy('[data-tippy-content]'); 以便我的 View 将正确地包含所有带有 data-tippy 的标签的tippy.js 工具提示-content 属性?

最佳答案

您可以在 rails 6 中轻松添加tippy.js :-

  • 添加tippy.js
  • 转到 app/javascripts/packs/application.js 并添加以下行
import tippy from 'tippy.js';
import 'tippy.js/dist/tippy.css';
window.tippy = tippy;
  • 现在在您的 Rails View 中使用tippy,如下所示
      tippy('#myButton', {
animation: 'scale',
content: 'Hi I am working',
});

关于webpack - Rails 6、webpack 和tippy.js 给出 "tippy is not defined"- 我在哪里调用tippy() 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62294869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com