【问题标题】:Webpack load legacy codeWebpack 加载遗留代码
【发布时间】:2018-05-05 15:34:54
【问题描述】:

我是一名 Webpack 初学者,正在尝试通过在几个使用 Webpack 和 Babel 的 ES6 模块中分解旧的 JavaScript/jQuery 应用程序来重构它。

到目前为止,我已经设法重构了应用程序的核心组件,但现在我被一个需要 jQuery (v2.2) 的模块和全局范围内可用的另一个库 (BIMsurfer @V1) 所困扰。

问题在于 BIMsurfer 库不是作为模块设计的,而是使用 Grunt 来生成缩小文件。

我看到我可以使用webpack.ProvidePlugin,但我收到了这个错误:

TypeError: $.extend is not a function [bimsurfer.js:14]

我用最少的代码创建了一个GitHub repo 来重现错误。

我的目标是用我的 JavaScript 库生成一个可以在多个应用程序中重复使用的包。

【问题讨论】:

    标签: javascript webpack bundle


    【解决方案1】:

    下载了你的 repo 并做了一些测试。 webpack 配置很好。但是还有其他问题需要解决。

    1. src/libs/jquery.js 文件为空。
    2. 在 src/libs/bimsurfer/bimsurfer.js 文件的第 15015 和 22438 行,WebGLDebugUtils 和 SceneJS_PubSubProxy 的声明缺少 var 关键字。

    一旦你解决了这两个问题,你应该能够在 chrome devtool 中看到一个干净的控制台。

    【讨论】:

    • 谢谢! jquery 是这个例子的一个错误......我也修复了另一个,现在它可以工作了。但是还有一些让我烦恼的事情:BIMsurfer 文件与它在应用程序的旧版本中使用的文件相同,并且在该应用程序中,在不添加缺少的var 的情况下工作正常。为什么?这是特定于 Webpack 包的东西,还是原始 repo 上有错误?
    • 如果你查看输出的bundle文件,你会发现webpack默认将use strict;添加到所有模块中。 !screenshot。这就是您收到错误的原因。有关更多详细信息,请查看MDN: Strict modehere
    猜你喜欢
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 2017-05-20
    • 1970-01-01
    • 2010-09-09
    • 2012-05-16
    相关资源
    最近更新 更多