Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 防止将jQuery绑定为与Browserify的依赖项_Javascript_Jquery_Node.js_Gulp_Browserify - Fatal编程技术网

Javascript 防止将jQuery绑定为与Browserify的依赖项

Javascript 防止将jQuery绑定为与Browserify的依赖项,javascript,jquery,node.js,gulp,browserify,Javascript,Jquery,Node.js,Gulp,Browserify,所以我一直在互联网上搜索,试图找到解决这个问题的办法,但我找不到一个有效的办法。我目前正在使用Gulp和Browserify的最新版本为我正在开发的网站捆绑JS。我们以前会将所有的JS文件连接在一起,但现在我要转到模块设置 我遇到的问题是复制某些依赖项,在本例中,我将重点介绍jQuery(v2.1.4)。以下是我的设置: main.js(每页都加载) page.js(每个页面都有自己的js文件,用于与该页面相关的脚本) 我遇到的问题是,现在jQuery在两个javascript包中。使用Brow

所以我一直在互联网上搜索,试图找到解决这个问题的办法,但我找不到一个有效的办法。我目前正在使用Gulp和Browserify的最新版本为我正在开发的网站捆绑JS。我们以前会将所有的JS文件连接在一起,但现在我要转到模块设置

我遇到的问题是复制某些依赖项,在本例中,我将重点介绍jQuery(v2.1.4)。以下是我的设置:

main.js(每页都加载)

page.js(每个页面都有自己的js文件,用于与该页面相关的脚本)

我遇到的问题是,现在jQuery在两个javascript包中。使用Browserify,我将jQuery标记为
page specific.js
的“外部”,这将jQuery从脚本中删除,但我得到一个错误
未捕获的错误:找不到模块“jQuery”
,我似乎找不到解决方案


如果我使用Browserify“排除”jQuery,或者如果我在
require('remodal')
周围放置
try
块,我最终会得到
uncaughttypeerror:$(…)。remodal不是一个函数。我猜,因为模块
remodal
需要jQuery,而且它没有加载到那里,所以它没有看到它被设置到窗口,这就是执行失败的原因

嗯,找到了我问题的答案。我想我只需要休息一晚,就可以更清晰地思考,寻找答案

我在某个时候签出了
browserify shim
(和
browserify global shim
),但发现它只会填充顶级依赖项。如果jQuery是依赖项的依赖项,那么这将不起作用。好的,一旦我找到下面链接的答案,我发现有一个未记录的(至少,我从未找到过)
{global:true}
您可以设置为将垫片传播到所有依赖项

var b = browserify();
var globalShim = require('browserify-global-shim').configure({
    'jquery': '$'
});
b.transform({ global: true }, globalShim);
在运行gulp之后,我的所有特定于页面的脚本现在都将jQuery作为窗口变量引用

!(function(root, factory) {
  if (typeof define === 'function' && define.amd) {
    define(['jquery'], function($) {
      return factory(root, $);
    });
  } else if (typeof exports === 'object') {
    factory(root, (window.$)); // <----------------- :D
  } else {
    factory(root, root.jQuery || root.Zepto);
  }
})(this, function(global, $) {
!(函数(根,工厂){
if(typeof define=='function'&&define.amd){
定义(['jquery'],函数($){
退货工厂(根,美元);
});
}else if(导出的类型==='object'){

factory(root,(window.$);//对于exclude或external,我得到了相同的错误:Uncaught error:找不到模块“jquery”。如果使用ignore,我会得到一个错误,$.map不是函数,因此它不会将$解释为jquery。
var b = browserify();
var globalShim = require('browserify-global-shim').configure({
    'jquery': '$'
});
b.transform({ global: true }, globalShim);
!(function(root, factory) {
  if (typeof define === 'function' && define.amd) {
    define(['jquery'], function($) {
      return factory(root, $);
    });
  } else if (typeof exports === 'object') {
    factory(root, (window.$)); // <----------------- :D
  } else {
    factory(root, root.jQuery || root.Zepto);
  }
})(this, function(global, $) {