簡體   English   中英

使用Browserify並分離公共庫時找不到jquery

[英]Can't find jquery when using Browserify and separating common libs

我在Express應用程序中繼承了一個大的Gulpfile,該應用程序有兩個步驟:

build-common- lib-組合並縮小jQuery和下划線之類的通用庫,使其成為“ common.min.js”

構建 -瀏覽器在“ js / modules / *。js”全局文件中瀏覽js文件,但不包括“ build-common-lib”步驟中的任何模塊,例如“ contact.js”

在這一點上,在瀏覽器化之前包含的所有contact.js是:

var $ = require('jquery');

我在結束body標簽之前加入了common.min.js ,然后是contact.min.js 我遇到的問題是:

Uncaught Error: Cannot find module 'jquery'

如果我自行瀏覽器ifycontact.js:

browserify -e contact.js -o contact.min.js

問題已解決,但完全破壞了分離公共庫的目的。

如何在contact.js正確引用jQuery?

Gulpfile很大,因此在此省略了。 運行任務時我沒有收到任何錯誤,但是如果您需要查看任何部分,請告訴我。

我認為您面臨的問題是browserify會將捆綁文件中的每個文件包裝到其自己的IIFE(立即調用的函數表達式)中,因此,此var $ = require('jquery'); 將僅在其自身上下文中有效(IIFE在build-common-lib IIFE內部產生)。

要解決此問題,請將jQuery顯式添加到window對象,以便其他IIFE可以訪問它。

嘗試這樣的操作(還取決於您要使用的別名):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM