我在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非常大,所以我在这里省略了它。我在运行任务时没有收到任何错误,但如果您需要查看任何部分,请告诉我。
答案 0 :(得分:2)
我认为您面临的问题是browserify会将捆绑包上的每个文件包装到自己的IIFE(立即调用的函数表达式)中,因此,此var $ = require('jquery');
仅在其自己的上下文中具有有效性( IIFE导致内部build-common-lib IIFE)。
要解决此问题,请将jQuery显式添加到窗口对象,以便其他IIFE可以访问它。
尝试这样的事情(取决于你想要使用的别名):
window.$ = window.jQuery = require( 'jquery' );