javascript - 无法使用 javascript_pack_tag(Webpacker) 找到 application.js

标签 javascript ruby-on-rails webpack

我已经在 Rails 应用中安装了 Webpacker gem,但并不真正知道如何将 app.js 文件包含到 app/javascript/packs 文件夹中。

我放

<%= javascript_pack_tag 'application' %>

进入我的application.html.erb布局和

//= require jquery/dist/jquery
//= require jquery-ui/ui/jquery-ui
//= require jquery-ujs

进入其中。

毕竟在某些 View (例如index.html.erb)中我在脚本标签中有一些jQuery:

<script>

  jQuery(document).ready(function(){...

当我刷新页面并查看控制台时,我得到:

GET http://localhost:3000/packs/application-5e96d8f9533313f79af6.js net::ERR_ABORTED 500 (Internal Server Error)

Uncaught ReferenceError: jQuery is not defined

问题是为什么 javascript_pack_tag 在 HTML 中将 application.js 转换为 application-5e96d8f9533313f79af6.js(带有这些数字)以及来自哪里即将到来?

此外,我还提到,我正在将我的应用程序从 Bower 转换为 Webpack(在 Webpacker gem 中),但不太确定如何包含要与 Webpacker 一起使用的 Bower 组件。

如有任何引用,我们将不胜感激

最佳答案

包名称中的那些数字是正常的,它是文件摘要,sprocket 在生产中也这样做(它用于缓存清除并确保客户端上的代码正确)。

//= require 指令用于链轮(又名 Assets 管道),在 webpacker 中您应该使用 javascript 导入(或在配置中使用 webpack.ProvidePlugin 以便 jQuery 标识符将在使用时自动加载)。

您还必须切换到 npm 依赖项 - yarn add jquery jquery-ui jquery-ujs

plugins: [
    new webpack.ProvidePlugin({
        $: "jquery",
        jQuery: "jquery",
        "window.jQuery": "jquery'",
        "window.$": "jquery"
    })
  ]

并使用单独的导入(在每个文件中导入其中使用的内容,就像没有其他文件一样,webpack 将处理重复项):

import $ from 'jquery';
import 'jquery-ui/themes/base/core.css';
import 'jquery-ui/themes/base/theme.css';
import 'jquery-ui/themes/base/selectable.css';
import 'jquery-ui/ui/core';
import 'jquery-ui/ui/widgets/selectable'; // and so on
import {} from 'jquery-ujs'

关于javascript - 无法使用 javascript_pack_tag(Webpacker) 找到 application.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56357970/

相关文章:

Javascript keyup shiftKey 不是预期的行为

javascript - 如何将一个 JavaScript 文件用于两个 HTML 文件?

javascript - 如何在绑定(bind)设置为新值之前 knockout 旧值?

ruby-on-rails - 如何将 RedCloth.to_html 转换回可编辑的普通文本?

typescript - source-map-loader 在哪里适合使用 Webpack 进行 TypeScript 编译?

Javascript定时器切换功能

ruby-on-rails - 如何配置 config.yml 以便我可以安装 devkit?

ruby-on-rails - Redis gem watch 和 unwatch 的困惑

Javascript 模块、加载器、打包器和包管理器混淆

webpack - 使用 globalize-webpack-plugin 进行生产