如何使用rails 6安装expose-loader 3.0.0?

hel*_*ion 5 ruby-on-rails webpack yarnpkg ruby-on-rails-6.1 expose-loader

我仍然对 jQuery 有一些依赖。对于 Rails 6 和 Webpack,需要公开 jquery,否则会发生错误。我已经使用 Exposure-loader 1.0.3 一段时间了,没有出现任何问题,但是,如果我升级到 Exposure-loader 2.0.0 或 3.0.0,我会得到:

\n
ERROR in ./node_modules/jquery/dist/jquery.js\nModule build failed (from ./node_modules/expose-loader/dist/cjs.js):\nTypeError: this.getOptions is not a function\n    at Object.loader (/Users/drama/Sites/FlightRecord/node_modules/expose-loader/dist/index.js:19:24)\n\xe2\x84\xb9 \xef\xbd\xa2wdm\xef\xbd\xa3: Failed to compile.\n
Run Code Online (Sandbox Code Playgroud)\n

有一些关于此问题的博客文章,但所有内容都围绕environment.js 中关联语法的格式设置...我尝试了几种不同的语法样式,它们都会导致相同的错误。

\n

使用 hide-loader 1.0.3,我只需在environment.js 中添加以下内容即可公开 jQuery:

\n
environment.loaders.append("jquery", {\n  test: require.resolve("jquery"),\n  use: [\n    { loader: "expose-loader", options: { exposes: ["$", "jQuery"] } }\n  ],\n});\n
Run Code Online (Sandbox Code Playgroud)\n

如果与 hide-loader >= 2 一起使用,相同的语法会导致上述错误。因此,令人不满意的代码似乎位于environment.loaders.append 调用中。我已经阅读了变更日志、文档、stackoverflow 和博客...但是,我所做的一切似乎都无法满足新的公开加载程序。

\n

现在,我又回到只使用 1.0.3...但我想克服这个问题并让 3.0.0 正常工作。

\n

如何使用 hide-loader 3.0.0 在 Rails 6.1 中为 Webpacker 公开 jQuery?

\n

我的environment.js 文件包含以下内容:

\n
environment.plugins.append('Provide',\n  new webpack.ProvidePlugin({\n    Rails: ['@rails/ujs'],\n    $: 'jquery',\n    jQuery: 'jquery',\n    'window.jQuery': 'jquery',\n    Popper: ['popper.js', 'default']\n  })\n)\n\nenvironment.loaders.append("jquery", {\n  test: require.resolve("jquery"),\n  use: [\n    { loader: "expose-loader", options: { exposes: ["$", "jQuery"] } }\n  ],\n});\n
Run Code Online (Sandbox Code Playgroud)\n

小智 0

您不再需要 Exposure-loader 来加载 jQuery。

添加到 config/webpack/environment.js

const webpack = require('webpack')
environment.plugins.append(
  "Provide",
  new webpack.ProvidePlugin({
      $: "jquery",
      jQuery: "jquery"
    })
  );
Run Code Online (Sandbox Code Playgroud)