【问题标题】:Isotope.js and Webpack - possible?Isotope.js 和 Webpack - 可能吗?
【发布时间】:2020-05-01 18:07:50
【问题描述】:

我正在尝试让我的 webpack 设置与 isotope.js 一起使用。我遇到的问题是webpack去编译的时候找不到窗口,报错。

尝试了以下方法:

在 myfile.js 中

import Isotope from 'isotope-layout';

webpack.config.js

loaders: [{ test: /isotope-layout/, loader: 'imports?this=>window!isotope-layout' }

但它会引发以下错误:

/ipb/node_modules/lodash/index.js" as it exceeds the max of "100KB".

/Users/user/Development/ipb/node_modules/webpack/node_modules/webpack-core/lib/NormalModuleMixin.js:206
                    throw e;
                          ^
ReferenceError: window is not defined
    at Object.<anonymous> (/Users/user/Development/ipb/node_modules/isotope-layout/js/isotope.js:60:4)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at DependenciesBlock.loadPitch (/Users/user/Development/ipb/node_modules/webpack/node_modules/webpack-core/lib/NormalModuleMixin.js:193:17)
    at DependenciesBlock.loadPitch (/Users/user/Development/ipb/node_modules/webpack/node_modules/webpack-core/lib/NormalModuleMixin.js:186:21)
    at DependenciesBlock.loadPitch (/Users/user/Development/ipb/node_modules/webpack/node_modules/webpack-core/lib/NormalModuleMixin.js:223:61)

我在这里做错了什么,或者有什么更好的方法来完成这项工作?

【问题讨论】:

    标签: javascript node.js jquery-isotope webpack


    【解决方案1】:

    试试:

    var $ = require('jquery');
    var jQueryBridget = require('jquery-bridget');
    var Isotope = require('isotope-layout');
    // make Isotope a jQuery plugin
    jQueryBridget( 'isotope', Isotope, $ );
    // now you can use $().isotope()
    $('.grid').isotope({// options...});
    

    【讨论】:

      【解决方案2】:

      尝试一下

      var Isotope = require('imports?$=jquery!isotope-layout/dist/isotope.pkgd');
      

      这似乎对我有用。注意这个解决方案依赖imports-loader;

      您可以将其推送到您的 Webpack 配置中,而不是内联解决它。只是希望这个答案能为您指明正确的方向。

      【讨论】:

      • 谢谢。我会试一试。我没有在这个项目中使用 jquery,但我假设我可以删除引用它的导入语句的部分,对吗?
      • @afithings 问题在于 Isotope 依赖于 jQuery。您可能可以使用其他方式注入它。这只是在我的快速测试中对我有用的东西。
      • 我不相信它确实需要 jquery。它的网站展示了 jquery 和 vanilla js 的实现示例。
      • 啊,好点子!是的,我认为在这种情况下,您可以在没有 jQuery 的情况下使其工作。 :)
      • 不幸的是,这不起作用。当我尝试将它应用到我的 webpack.config 文件时,它会抛出一个错误,说 var isotope-layout/dist/isotope.pkgd.js = require("isotope-layout/dist/isotope.pkgd.js"); 这显然是不正确的。我在我的代码中将其称为import Isotope from 'isotope-layout'。我在 webpack.config 中的条目如下所示:{ test: /isotope-layout/, loader: 'imports?isotopelayout/dist/isotope.pkgd.js' },
      猜你喜欢
      • 2014-09-27
      • 2013-04-25
      • 2021-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-21
      • 2011-03-31
      • 2013-12-03
      相关资源
      最近更新 更多