我刚刚开始在现有应用程序中尝试使用 Webpacker。
从我读过的所有内容来看,我的理解是 Webpacker 和 Sprockets 可以共存,并且在 Webpacker 中编译的库(例如 jquery)可以通过全局变量提供给 Sprockets。
但是我在 Assets 管道中的所有 jquery 都在提高 ReferenceError: Can't find variable: $
我误解了,还是我的代码中有错误?
我添加了 jqueryyarn 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/