代码之家  ›  专栏  ›  技术社区  ›  Lordrem

如何在Web包中使用外部库

  •  1
  • Lordrem  · 技术社区  · 7 年前

    我一直在努力在我的webpack项目中创建所有的外部lib。直到今天一切似乎都正常,现在一切又崩溃了,我不明白为什么。这可能是因为我的配置在以前版本的webpack或其他东西中很幸运地工作过。有人知道如何正确配置外部吗?循序渐进地遵循Web包文档不会导致任何结果。这是我的相关代码:

    网页包。配置。js公司

    externals: {
        jquery: 'jQuery',
        d3: 'd3',
        lodash : '_',
        moment: 'moment',
        backbone: 'Backbone',
        "pdfjs-dist": "window.pdfjsLib"
    }
    

    我还有一个关于jquery的插件

    plugins: [
        new webpack.ProvidePlugin({
            $: 'jquery'
        })
    ]
    

    指数html

    <script src="./vendor/lodash.js"></script>
    <script src="./vendor/jquery.js"></script>
    <script src="./vendor/d3.js"></script>
    <script src="./vendor/moment.js"></script>
    <script src="./vendor/backbone.js"></script>
    <script src="./vendor/pdf/pdf.min.js"></script>
    <script src="./app-asd98u9a8d.js"></script>
    

    这是我的主脚本示例。它在 $(document) 线

    import * as $ from 'jquery';
    $(document).ready(function(){
      ...
    }
    

    错误是 Uncaught TypeError: $ is not a function

    注意$的定义非常重要。。。但这不是正确的目标。如果我想在这一点上找到合适的对象,它应该是 $.default .所以这就像导入没有给我正确的对象一样。

    我错过了什么?

    提前感谢

    1 回复  |  直到 7 年前
        1
  •  0
  •   Lordrem    7 年前

    好的,我成功了。通过查看生成的代码,我发现在 import * as $ from 'jquery' 按预期返回不包含默认导出的全局变量,即使它存在。将所有呼叫替换为 let $ = require('jquery') 修复了它现在查找默认导出的问题。