空对象需要角度browserify

时间:2014-10-06 13:06:25

标签: angularjs coffeescript gulp browserify

当我尝试使用bowserify,angularjs和coffeescript时,我遇到了问题。

事实上,当我尝试要求(' angular')时,我得到一个空对象:

angular = require('angular')
console.log angular ## return an empty object {}

configuration = require('../../config/config') 
console.log configuration ## returns my fully config file correctly

我不知道为什么在这种情况下它无法正常工作: - /。 这是我的package.json,其中我放置了我的个人角度依赖项:

{
    "dependencies": {
        "gulp": "*",
        "gulp-browserify": "*",
        "coffeeify": "*",
        "gulp-concat": "*"
    },
    "browser": {
        "angular": "./app/core/angular-libs/angular.min.js",
        "angular-route": "./app/core/angular-libs/angular-route.min.js",
        "angular-animate": "./app/core/angular-libs/angular-animate.min.js"
    }
}

这是我的gulp文件,它在dest文件夹中生成我的bundle.js:

var gulp = require('gulp');
var browserify = require('gulp-browserify');
var concat = require('gulp-concat');

gulp.task('scripts', function () {
    return gulp.src('app/**/*.coffee', { read: false })
        .pipe(browserify({ transform: ['coffeeify'], extensions: ['.coffee'] }))
        .pipe(concat('bundle.js'))
        .pipe(gulp.dest('./dest/'));
});

gulp.task('default', function () {
    gulp.run('scripts');
});
你能帮帮我吗? : - /

感谢您提前

2 个答案:

答案 0 :(得分:9)

Angular 1不支持CommonJS模块,因此它“导出”一个空对象。

相反,只需要它(不指定结果):

require('angular')

这会将角度附加到全局对象。

更新:As of Angular 1.3.14require('angular')现在返回angular个对象。

答案 1 :(得分:1)

您还可以尝试browserify-shimangular对象与module.exports相关联。

npm install -save-dev browserify-shim

我设法让angular使用package.json中的以下配置:

{
    "browser": {
        "angular": "./node_modules/angular/angular.js"
    },
    "browserify-shim": {
        "angular": "angular"
    },
    "browserify": {
        "transform": [ "browserify-shim" ]
    }
}

这也解决了使角度成为全局对象的问题。它(angular变量)可以保留存储在同名全局变量中的对象,但如果有人覆盖全局变量,则引用将始终是正确的。