jquery - 通过 Webpack 在 Rails 中安装 jQuery 时未定义 $

标签 jquery ruby-on-rails webpack ruby-on-rails-6

我正在尝试通过 Webpack 在 Rails 6.0.0.rc1 中安装 jQuery,我不确定我缺少什么,但我收到错误 $ is not Defined浏览器控制台尽管能够编译 jQuery。

我已经使用 yarn add jquery 添加了 jQuery,所以我的 package.json 看起来像这样

{
  "name": "muladeseis_app",
  "private": true,
  "dependencies": {
    "@babel/preset-react": "^7.0.0",
    "@rails/actioncable": "^6.0.0-alpha",
    "@rails/activestorage": "^6.0.0-alpha",
    "@rails/ujs": "^6.0.0-alpha",
    "@rails/webpacker": "^4.0.2",
    "babel-plugin-transform-react-remove-prop-types": "^0.4.24",
    "jquery": "^3.4.0",
    "prop-types": "^15.7.2",
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "turbolinks": "^5.2.0"
  },
  "version": "0.1.0",
  "devDependencies": {
    "webpack-dev-server": "^3.3.1"
  }
} 

我的 app/javascript/packs/application.js 需要来自 node_modules 的 jquery

require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require("jquery")

我尝试通过以下方式在 config/webpack/environment.js 中注册 $:

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

const webpack = require('webpack')

module.exports = environment

environment.plugins.append(
    'Provide',
    new webpack.ProvidePlugin({
        $: 'jquery',
        jQuery: 'jquery'
    })
)

每当我在 View 中添加带有 $ 引用的脚本时,我都会收到 Uncaught ReferenceError: $ is not Defined

我已经检查了 StackOverflow 答案,例如 this看看我是否错误地注册了关键字符“$”,但我只找到了建议使用我已经在配置中提到的 ProvidePlugin 的答案。

此外,如果我在浏览器检查器中探索我的应用程序源,我确实会看到 jQuery 代码集成在 localhost:3000 >> packs/js 中,所以问题不是 Webpack 找不到 jQuery,而是关键字“$”和“jQuery' 无法识别。

非常感谢您帮助调试此问题。

最佳答案

我已经找到了缺少的东西。

app/javascript/packs/application.js 中忘记声明:

window.jQuery = $;
window.$ = $;

因此可以选择 jQuery 关键字。

关于jquery - 通过 Webpack 在 Rails 中安装 jQuery 时未定义 $,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55895494/

相关文章:

ruby-on-rails - 无法从另一个模型访问一个模型的实例变量)(self.ruby)

reactjs - 使用 NextJS,我想以编程方式从 next.config.js 访问 assetPrefix

ruby-on-rails - 带有 git remote 的 Gem 文件在 heroku push 上失败

node.js - 找不到 bundle.js [Webpack]

reactjs - next.js 包分析器不会创建页面来查看包

javascript - jQuery: promise : 'always()' 未执行

javascript - 页面加载后如何加载数据表?

jquery - 如何在 `drop` 事件后停止重定向?

javascript - 悬停时如何增加多行文本的下划线宽度

ruby-on-rails - 在 Heroku 上为 Rails 4.2 应用程序正确配置 Postgres 数据库