&引用;找不到模块';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>