使用Browserify并分离常见库时找不到jquery

时间:2015-11-27 02:21:54

标签: jquery gulp browserify

我在Express应用程序中继承了一个大型Gulp文件,它有两个我正在使用的步骤:

build-common-lib - 将常见库(如jQuery和下划线)合并并缩小为“common.min.js”

构建 - 浏览“js / modules / * .js”glob中的js文件,不包括“build-common-lib”步骤中的任何模块,例如“contact.js”

此时,浏览器化之前所有value = struct.unpack ('<21s', f.read(21))[0] print 'ucid =' + finalizeString (str(value)) 都包含:

contact.js

我在关闭正文标记之前包含var $ = require('jquery'); ,然后是common.min.js。我遇到的问题是:

contact.min.js

如果我自己浏览contact.js:

Uncaught Error: Cannot find module 'jquery'

问题得到解决,但完全违背了分离公共库的目的。

如何正确引用browserify -e contact.js -o contact.min.js 中的jQuery?

Gulpfile非常大,所以我在这里省略了它。我在运行任务时没有收到任何错误,但如果您需要查看任何部分,请告诉我。

1 个答案:

答案 0 :(得分:2)

我认为您面临的问题是browserify会将捆绑包上的每个文件包装到自己的IIFE(立即调用的函数表达式)中,因此,此var $ = require('jquery');仅在其自己的上下文中具有有效性( IIFE导致内部build-common-lib IIFE)。

要解决此问题,请将jQuery显式添加到窗口对象,以便其他IIFE可以访问它。

尝试这样的事情(取决于你想要使用的别名):

window.$ = window.jQuery = require( 'jquery' );