问题标签 [expose-loader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
251 浏览

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

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

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

使用expose-loader 1.0.3,我只需在 environment.js 中添加以下内容即可公开 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 文件包含以下内容:

0 投票
0 回答
21 浏览

webpack - jQuery 在 webpack 4 中多次加载

我正在尝试将现有项目中的 webpack 版本从 3.6 升级到 4.46,并且遇到了一个我无法解决的问题(提供更多细节,它是一个 rails 应用程序,我正在从 3 升级 webpacker到 5,但我认为这是一个 webpack 问题)。

在这个程序中,jQuery 以 $ 的形式全局公开。还有一些代码可以像这样扩展全局值:

问题是在代码中的各个点,jQuery 库似乎被重新加载/重新初始化,并且当 $ 存在时,$.browser 变得未定义。

请注意,我真的一点也不喜欢全局变量,也不喜欢以这种方式使用它们,但这是我已经被处理的一手牌,我只是想完成这次升级。

我尝试过的事情之一是调整分块,认为可能 jQuery 在不同的块中多次加载。所以我尝试了这个但没有成功:

否则我的配置非常标准:

在插件中:

任何建议将不胜感激。

0 投票
0 回答
26 浏览

jquery - 暴露 loader webpack 插件

我使用暴露加载器插件。

我的第一个问题是:我需要像这样在我的包中包含 Jquery 吗?

在文档中(此处为https://webpack.js.org/loaders/expose-loader/),他们说:

require.resolve 调用是一个 Node.js 函数(与 webpack 处理中的 require.resolve 无关)。require.resolve 为您提供模块的绝对路径(“/.../app/node_modules/jquery/dist/jquery.js”)。所以暴露只适用于 jquery 模块。并且仅在捆绑中使用时才会暴露。

但是当他们说:

所以暴露只适用于 jquery 模块。并且仅在捆绑中使用时才会暴露。

所以我的第二个问题是:他们的意思是什么?

0 投票
1 回答
188 浏览

javascript - Webpack 从 v4 迁移到 v5,expose-loader 抛出错误

尝试将 webpack 从版本 4.44.2 更新到最新版本 5.58.2,我想有重大变化。暴露加载器已设置,它正在引发错误。

这是 package.json 文件的片段

这是 webpack.config.js 文件的设置

这是我尝试过的另一种设置expose-loader的方法...

我得到的错误是

0 投票
0 回答
137 浏览

webpack - 将模块联合与全局公开的包一起使用

好的,首先是一个关于原因的简短故事。

我们有一个复杂的项目,其中混合了 razorViews、reactViews 和 react 组件。剥离这个单体的一个步骤是开始做 mfe。

我在这方面做得很好,但遇到了一些我似乎找不到好的答案的问题。

我们需要在全球范围内公开不同的包,如 moment、react、jQuery 等,以便 razorviews 和第三方库正常工作。我们在 webpack 配置中有几个这样的入口文件。所有这些看起来都像这样:

由于“Shared module is not available for eager consumption”错误,我根据文档将所有这些入口文件移动到引导文件中。

然后我的mfe开始工作,一切都很好。直到我导航到我们的一个razorViews。使用 boostrap 方法不再定义所有暴露的包。试图将其改回并再次起作用。我猜引导程序如何以更动态的方式与服务包一起工作是它不起作用的原因,但我可能是错的。

当像这样使用expose-loader并进行模块联合时,有没有人遇到过类似的情况?

编辑:

好的,这是对此的更新,我认为当我只恢复引导方法时它会起作用。但我仍然收到未定义包的错误:“ Uncaught ReferenceError: jQuery is not defined

我还需要删除的是 ModuleFederationPlugin 的配置,然后一切正常。奇怪的..

0 投票
0 回答
106 浏览

webpack - webpack 5 adds defer="defer" to script tags?

my html document's head tag has in it:

and in the document's body, I have a script tag which is trying to use jQuery, but I get the error that $ is undefined.

How can I make it so that expose-loader does not put that defer tag on jQuery so that it's available when my script tag is executed?

0 投票
0 回答
8 浏览

webpack - "webpack" 与 "webpack --watch" 会得到不同的输出

我在 webpack5 中使用了expose-loader,我发现当 webpack --watch 正在运行并且文件发生更改时,会与 webpack 生成不同的输出,组合文件名没有“-exposed”后缀。我为此创建了一个演示: https ://github.com/libla/expose-loader-demo.git