gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:42:07 25 4
gpt4 key购买 nike

我刚刚开始在现有应用程序中尝试使用 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/

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