请问在webpack2中使用expose-loader的正确姿势

发布于 2022-09-04 14:38:15 字数 909 浏览 10 评论 0

这两天试着把我的脚手架项目webpack-seed升级到webpack2,发现了一个问题:我用来兼容jquery插件的expose-loader在webpack2的环境下报错了。

由于expose-loader最近并未更新,所以更别提更新官方文档了,github上放着的还是webpack1时的示例代码,所以我是这么用的:

    {
      test: require.resolve('jquery'),
      loader: 'expose-loader?$',
      options: {
        $: true,
      },
    },

然后编译打包的时候就报了如下的错误:

ERROR in ./~/jquery/dist/jquery.js
Module build failed: TypeError: this.query.substr is not a function
    at Object.module.exports.pitch (I:\XAMPP\htdocs\webpack-seed\node_modules\expose-loader\index.js:26:34)
 @ ./src/pages/alert/index/page.js 1:0-17

感觉上是loader的参数没能传得进去,因此敢问各位大兄弟,可有成功在webpack2环境下使用expose-loader的?

另外附上webpack1的用法:

{ test: require.resolve("jquery"), loader: "expose-loader?$!expose-loader?jQuery" },

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

从﹋此江山别 2022-09-11 14:38:15

试试这么写, 在我工程里好用的:

module: {
    rules: [
      {
        test: /\.less$/,
        use: Extract.extract({fallbackLoader: 'style-loader', loader: ["css-loader", "less-loader"]})
      },
      {test: require.resolve("jquery"), use: "expose-loader?$"},
      {test: require.resolve("jquery"), use: "expose-loader?jQuery"},
      {test: require.resolve("react"), use: "expose-loader?React"},
      {test: require.resolve("react-dom"), use: "expose-loader?ReactDOM"},
      {test: require.resolve("underscore"), use: "expose-loader?_"}
    ]
}
浮生面具三千个 2022-09-11 14:38:15

我的也是webpack2 这样写没问题呢:

{
    // 得到jquery模块的绝对路径
    test: require.resolve("jquery"),
    // 将jquery绑定为window.jQuery 和 window.$       
    loader: "expose-loader?jQuery!expose-loader?$"
},
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文