require() 使用 gulp angular browserify 返回空对象
require() returning empty object with gulp angular browserify
我在使用 gulp 构建我的项目时遇到问题,这是 运行 我使用 Bower 下载的外部库上的 browserify 任务(使用 debowerify)。其中一个库 - angular-gridster - 已更新为使用 UMD 模式,现在它抛出一个错误,其中对 angular 的引用是一个空对象。
angular-gridster.js 文件是这样开始的:
(function(root, factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// AMD
define(['angular'], factory);
} else if (typeof exports === 'object') {
// CommonJS
module.exports = factory(require('angular'));
} else {
// Browser, nothing "exported". Only registered as a module with angular.
factory(root.angular);
}
}(this, function(angular) {
'use strict';
// This is throwing my error
return angular.module('gridster', [])
并且在它尝试调用 angular.module() 的地方抛出错误 'angular.module is not a function'。在调试它时我可以看到 angular 只是一个空对象并且没有被正确加载。我不确定这是否是 require() 方法或 gulp 或 browserify 或 debowerify...
的问题
这是我的 gulp 任务
gulp.task('dependencies', function() {
gulp.src(paths.dependencies)
.pipe(browserify({
insertGlobals: true,
debug: true,
transform: ['debowerify']
}).on('error', gutil.log))
.pipe(concat('3rdparty.js'))
.pipe(gulp.dest('www/js'));
});
有什么想法吗?谢谢!
我想出了一个解决方案,就是调用 require() 函数,然后将现在的全局变量 angular 传递给 factory() 方法。
if (typeof define === 'function' && define.amd) {
// AMD
define(['angular'], factory);
} else if (typeof exports === 'object') {
// CommonJS
require('angular');
module.exports = factory(angular);
} else {
// Browser, nothing "exported". Only registered as a module with angular.
factory(root.angular);
}
我在使用 gulp 构建我的项目时遇到问题,这是 运行 我使用 Bower 下载的外部库上的 browserify 任务(使用 debowerify)。其中一个库 - angular-gridster - 已更新为使用 UMD 模式,现在它抛出一个错误,其中对 angular 的引用是一个空对象。
angular-gridster.js 文件是这样开始的:
(function(root, factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// AMD
define(['angular'], factory);
} else if (typeof exports === 'object') {
// CommonJS
module.exports = factory(require('angular'));
} else {
// Browser, nothing "exported". Only registered as a module with angular.
factory(root.angular);
}
}(this, function(angular) {
'use strict';
// This is throwing my error
return angular.module('gridster', [])
并且在它尝试调用 angular.module() 的地方抛出错误 'angular.module is not a function'。在调试它时我可以看到 angular 只是一个空对象并且没有被正确加载。我不确定这是否是 require() 方法或 gulp 或 browserify 或 debowerify...
的问题这是我的 gulp 任务
gulp.task('dependencies', function() {
gulp.src(paths.dependencies)
.pipe(browserify({
insertGlobals: true,
debug: true,
transform: ['debowerify']
}).on('error', gutil.log))
.pipe(concat('3rdparty.js'))
.pipe(gulp.dest('www/js'));
});
有什么想法吗?谢谢!
我想出了一个解决方案,就是调用 require() 函数,然后将现在的全局变量 angular 传递给 factory() 方法。
if (typeof define === 'function' && define.amd) {
// AMD
define(['angular'], factory);
} else if (typeof exports === 'object') {
// CommonJS
require('angular');
module.exports = factory(angular);
} else {
// Browser, nothing "exported". Only registered as a module with angular.
factory(root.angular);
}