&引用;找不到模块';jquery'"E;”用Gulp在browserify中处理JQuery和AngularJS的globals

&引用;找不到模块';jquery'"E;”用Gulp在browserify中处理JQuery和AngularJS的globals,angularjs,gulp,browserify,Angularjs,Gulp,Browserify,我一直在尝试创建一个利用AngularJS、Browserify和Gulp的项目,以获得优秀的开发人员体验,产生一个可分发的“模块”(用角度的说法)。其想法是拥有一个自我记录的项目,如Angular Bootstrap,该项目还可以生成一个可消费的发行版,供其他应用程序使用 我们在Gulp方面取得了很好的效果,但在browserify/browserify shim方面遇到了问题。此外,不幸的是,大多数示例要么不使用gulp,要么使用gulpbrowserify,后者已被列入黑名单/结束 我们将

我一直在尝试创建一个利用
AngularJS
Browserify
Gulp
的项目,以获得优秀的开发人员体验,产生一个可分发的“模块”(用角度的说法)。其想法是拥有一个自我记录的项目,如
Angular Bootstrap
,该项目还可以生成一个可消费的发行版,供其他应用程序使用

我们在
Gulp
方面取得了很好的效果,但在
browserify/browserify shim
方面遇到了问题。此外,不幸的是,大多数示例要么不使用gulp,要么使用
gulpbrowserify
,后者已被列入黑名单/结束

我们将
Google CDN
中的
AngularJS
JQuery
作为
标记,并声明了
“angular”:“global:angular”
“JQuery”:“global:$”
browserify shim
package.json的配置中,但我们得到的是
“找不到模块”
当我们尝试在浏览器系列化代码(一旦在浏览器中运行)内部使用
var angular=require('angular')
var$=require('jquery')

我已经创建了一个示例项目,将其提取到接近最小值

克隆完成后,您将从
多浏览器化
文件夹的根目录运行
'npm install'
,然后运行
'bower install'
,以生成文件并运行测试服务器

运行gulp后,您可以通过http://:4000/gulp.HTML访问live HTML


任何帮助都将不胜感激-我想知道我们是否遇到了gulp、browserify、乙烯基源流等交叉点的错误/问题,或者更可能的是,我们还没有完全了解它

从CDN检索依赖项是一项要求吗?如果没有,你可以使用npm来处理你的依赖项,让browserify为你变魔术

JQuery和Angular可通过npm获得,因此以JQuery为例,您可以在
包.json中声明它,如下所示:

  ...
  "dependencies": {
    "jquery": "^1.11.1"
  },
  ...
或者,从包含
package.json
的目录运行
npm install-s
将安装指定的模块,并将其作为依赖项保存在
package.json
文件中

一旦安装了此依赖项(以及您想要的任何其他依赖项),您就可以继续在app.js中使用它们,如下所示:

var $ = require('jquery');

$('<div>Hello World, I\'m using JQuery!</div>').appendTo('body');
var$=require('jquery');
$('helloworld,我正在使用JQuery!')。appendTo('body');
就这么简单,而且不需要使用bower或browserify shim-browserify将查看您的node_modules文件夹并找到它们。我还没有尝试过angular(我在尝试安装它时遇到了一个问题),但是它可以通过使用,所以它应该可以工作

# assuming you have installed jquery locally instead of globally
npm install jquery -s         # without -g flag
与其要求(“jquery”,不如给出源目录的相对路径
需要(”/node_modules/jquery/dist/jquery.min.js“

请尝试以下操作:

<script>window.$ = window.jQuery = require('./node_modules/jquery/dist/jquery.min.js');</script>
window.$=window.jQuery=require('./node_modules/jQuery/dist/jQuery.min.js');

var$=jQuery=require('./node_modules/jQuery/dist/jQuery.min.js');

我已经更新了位于的测试存储库,使其非常简单,并且我提供了一个README.md来解释这个问题,如何运行构建和应用程序,以及预期的输出应该是什么。我不知道这是如何回答这个问题的。这个问题非常清楚地描述了一个特定的场景和问题。这个答案完全忽略了这个场景。我没有忽略这个场景,而是提供了一种我认为是他们最终目标(能够使用JQuery)的替代方法,以一种他们可能没有考虑到的不同方式实现。这种方法将意味着不需要browserify shim,因此它将(尽管是间接地)解决他们的问题。问题的关键是使用来自CDN的jQuery和Angular,但是能够像往常一样在开发过程中要求它们。因此,建议将其与项目的JavaScript的其余部分捆绑在一起完全可以避免这个问题。我不知道browserify浏览了npm package.json,这个技巧刚刚帮我省去了大量的头痛+1.
<script>var $ = jQuery = require('./node_modules/jquery/dist/jquery.min.js');</script>