ruby-on-rails - 如何使用 Webpacker 使 jquery 可用于链轮?

标签 ruby-on-rails webpacker

我刚刚开始在现有应用程序中尝试使用 Webpacker。

从我读过的所有内容来看,我的理解是 Webpacker 和 Sprockets 可以共存,并且在 Webpacker 中编译的库(例如 jquery)可以通过全局变量提供给 Sprockets。

但是我在 Assets 管道中的所有 jquery 都在提高 ReferenceError: Can't find variable: $
我误解了,还是我的代码中有错误?

我添加了 jquery
yarn add jquery
并在 environment.js 中分配变量

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

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

module.exports = environment;

这有效:
#javascript/packs/application.js
$(function () {
    console.log('Hello World from Webpacker via JQUERY');
});

这不
#assets/javascripts/application.js
$(function () {
    console.log('Hello World from Sprockets via JQUERY');
});
# ReferenceError: Can't find variable: $

什么是预期的行为?

最佳答案

最后,在 webpacker 中将 jQuery 暴露给全局是相对容易的。但是找到有关如何执行此操作的文档非常困难!希望这可以为其他人节省搜索时间。

添加暴露加载器

yarn add expose-loader -D

然后在config/webpack/environment.js中添加如下配置
environment.loaders.append('expose', {
    test: require.resolve('jquery'),
    use: [{
        loader: 'expose-loader',
        options: '$'
    }, {
        loader: 'expose-loader',
        options: 'jQuery',
    }]
})

然后我能够从 Assets 管道中删除 jquery,重新启动服务器,并且链轮中所有剩余的 jquery 函数继续按预期运行。

关于ruby-on-rails - 如何使用 Webpacker 使 jquery 可用于链轮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51920575/

相关文章:

ruby-on-rails - 无法在 Ubuntu 16.04 中使用 rbenv 2.3.1 安装 Ruby

ruby-on-rails - 您如何与开发人员团队一起管理 Ruby on Rails 迁移?

ruby-on-rails - Rails 中的 ActiveModel::Serializer - JSON 结果中忽略的序列化程序方法

javascript - Rails 6 与 js-cookie 库 : cookie is set but not persistent

ruby-on-rails - Rails Webpacker 3.0 导入 CSS 文件不起作用

sql - 在 PostGIS 中查找包含一个点的所有多边形

ruby-on-rails - rails : Could not load database configuration. 没有这样的文件 -

ruby-on-rails - 使用 scss、webpacker 和rails 的样式表顺序 6

javascript - 为新的 Rails 应用程序运行服务器时出现 Webpacker 错误

javascript - Jest 不转换 CSS 文件导入语句