4

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

ERROR in ./node_modules/jquery/dist/jquery.js
Module build failed (from ./node_modules/expose-loader/dist/cjs.js):
TypeError: this.getOptions is not a function
    at Object.loader (/Users/drama/Sites/FlightRecord/node_modules/expose-loader/dist/index.js:19:24)
ℹ 「wdm」: Failed to compile.

关于这个问题有几篇博客文章,但都围绕着 environment.js 中关联语法的格式...我尝试了几种不同的语法样式,它们都导致相同的错误。

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

environment.loaders.append("jquery", {
  test: require.resolve("jquery"),
  use: [
    { loader: "expose-loader", options: { exposes: ["$", "jQuery"] } }
  ],
});

如果与expose-loader >= 2 一起使用,同样的语法会导致上述错误。因此,不愉快的代码似乎在于 environment.loaders.append 调用。我已经阅读了 Changelog、文档、stackoverflow 和博客……但是,我尝试的任何东西似乎都无法满足新的 Expose-loader。

现在,我回到只使用 1.0.3 ......但我想征服这个并让 3.0.0 工作。

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

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

environment.plugins.append('Provide',
  new webpack.ProvidePlugin({
    Rails: ['@rails/ujs'],
    $: 'jquery',
    jQuery: 'jquery',
    'window.jQuery': 'jquery',
    Popper: ['popper.js', 'default']
  })
)

environment.loaders.append("jquery", {
  test: require.resolve("jquery"),
  use: [
    { loader: "expose-loader", options: { exposes: ["$", "jQuery"] } }
  ],
});
4

0 回答 0