当我尝试使用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');
});
你能帮帮我吗? : - /
感谢您提前
答案 0 :(得分:9)
Angular 1不支持CommonJS模块,因此它“导出”一个空对象。
相反,只需要它(不指定结果):
require('angular')
这会将角度附加到全局对象。
更新:As of Angular 1.3.14,require('angular')
现在返回angular
个对象。
答案 1 :(得分:1)
您还可以尝试browserify-shim将angular
对象与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
变量)可以保留存储在同名全局变量中的对象,但如果有人覆盖全局变量,则引用将始终是正确的。