ruby-on-rails – 如何使用Webpacker为链轮提供jquery?

ruby-on-rails – 如何使用Webpacker为链轮提供jquery?,第1张

概述我刚开始在现有的应用程序中试验Webpacker. 从我读过的所有内容中,我的理解是Webpacker和Sprockets可以共存,并且在Webpacker中编译的库(例如,jquery)可以通过全局变量提供给Sprokets. 但是我在资产管道中的所有jquery都引发了ReferenceError:无法找到变量:$ 我误解了,或者我的代码中是否有错误? 我添加了jquery 纱添加jquery 我刚开始在现有的应用程序中试验Webpacker.

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

但是我在资产管道中的所有jquery都引发了ReferenceError:无法找到变量:$

我误解了,或者我的代码中是否有错误?

我添加了jquery

纱添加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暴露给全局变得相对容易.但是找到关于如何做到这一点的文档非常困难!希望这可以节省别人的搜索.

添加expose-loader

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',}]})

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

总结

以上是内存溢出为你收集整理的ruby-on-rails – 如何使用Webpacker为链轮提供jquery?全部内容,希望文章能够帮你解决ruby-on-rails – 如何使用Webpacker为链轮提供jquery?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1287716.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存