我正在将一个项目从Sprockets迁移到Webpacker。
我似乎无法正常运行的最后一件事是通知。
我曾经能够做:$ .notify('Test')但现在我得到了
Uncaught TypeError: $.notify is not a function
当我尝试在浏览器控制台中执行此操作时,出现了同样的错误,而之前它还不错。
这是我的application.js文件:
require("@rails/ujs").start();
require("turbolinks").start();
require("@rails/activestorage").start();
import 'bootstrap';
import 'bootstrap-notify';
我还尝试了bootstrap-notify上的require,但这没有任何区别。
Environments.js
const { environment } = require('@rails/webpacker')
const erb = require('./loaders/erb')
const coffee = require('./loaders/coffee')
const webpack = require('webpack');
environment.plugins.append('Provide', new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
jquery: 'jquery',
Popper: ['popper.js', 'default']
}));
environment.config.set('resolve.alias', {jquery: 'jquery/src/jquery'});
environment.loaders.prepend('coffee', coffee);
environment.loaders.prepend('erb', erb);
module.exports = environment;
如果我将bootstrap-notify.js文件放在assets / javascripts文件夹中,并将其包含如下:
= javascript_include_tag 'bootstrap-notify', 'data-turbolinks-track': 'reload'
它的工作没有任何问题。
最佳答案
终于成功了。
bootstrap-notify是一个旧程序包,不执行任何导出,仅启用$($ .notify)上的功能。
为了使它与Webpacker配合使用,您可以安装脚本加载器
yarn add script-loader
然后将其添加到您的application.js文件(在webpack目录下)
require("script-loader!bootstrap-notify");
这将在全局上下文中评估代码。确保代码最小化,因为Webpack不会为您这样做。
关于javascript - 在Rails下使用webpacker进行Bootstrap-notify返回$ .notify不是函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60378066/