为什么两个独立的bundle中的browserify不加载依赖项?

时间:2014-09-29 14:14:45

标签: browserify

我正在尝试将我的browserify供应商库与我自己的代码分开。我运行了以下(简化):

browserify -r angular -o app/dist/vendor.js browserify -x angular app/js/main.js -o app/dist/app.js

当我加载我的应用时,我得到Error: Cannot find module 'angular'

如果我将它全部捆绑为browserify app/js/main.js -o app/dist/app.js,一切正常。我的main.js很简单,看起来像:

var angular = require('angular'), app = require('./app'); angular.bootstrap(document,[app.name]);

这是它遇到的第一行require('angular')

是的,我确实为angular设置了一个简单的垫片,并在package.json中将browser条目映射到我的角度垫片路径,以便它正常工作(或者它不会在所有一个案例)。

我还尝试使用一些日志手动编辑vendor.js和app.js以查看它们的运行方式。看起来app.js的包装函数(是,IIFE)首先运行,然后是vendor.js的包装器。并且,我多次验证了vendor.js的脚本标记是第一个,然后是app.js的标记。

我是否可以与vendor.js比app.js更大(1.5个数量级)的事实有关,所以app.js首先完成加载?我怀疑它,或者jquery或angular的每个有序脚本标签都会破坏,但我不知道。

1 个答案:

答案 0 :(得分:0)

没关系,我明白了。结果是2个标签是自动生成的。这导致它们是异步的,并且浏览器可以根据完成顺序自由地执行它们所需的操作。