0

我正在使用gulp-usemin來縮小我在我的應用程序中使用的JavaScript文件,由於某種原因,gulp沒有看到我的一個文件。我有這個在我的index.html:gulp-usemin TypeError:路徑必須是字符串。收到undefined

<body ng-app="App"> 
    <!--[if lte IE 8]> 
     <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p> 
    <![endif]--> 

    <div> 
     <ui-view></ui-view> 
    </div> 

    <div class="footer"> 
     <div class="container"> 
      <!-- TODO: add fotter here --> 
     </div> 
    </div> 

    <!-- build:js(.) scripts/scripts.js--> 
    <script src="bower_components/jquery/dist/jquery.min.js" type="text/javascript"></script> 
    <script src="bower_components/bootstrap/dist/js/bootstrap.min.js" type="text/javascript"></script> 
    <script src="bower_components/angular/angular.min.js" type="text/javascript"></script> 
    <script src="bower_components/angular-ui-router/release/angular-ui-router.min.js" type="text/javascript"></script> 
    <script src="bower_components/angular-bootstrap/ui-bootstrap-tpls-0.14.3.min.js" type="text/javascript"></script> 
    <!-- endbuild --> 

    <!-- build:js({.tmp,app}) --> 
    <script src="scripts/app.js"></script> 
    <script src="scripts/routes.js" type="text/javascript"></script> 
    <script src="scripts/controllers/controller1.js" type="text/javascript"></script>   
    <script src="scripts/controllers/controller2.js" type="text/javascript"></script> 
    <script src="scripts/services/service1.js" type="text/javascript"></script> 
    <script src="scripts/services/service2.js" type="text/javascript"></script> 
    <script src="scripts/directives/directive1/directive1.js" type="text/javascript"></script> 
    <script src="scripts/directives/directive2/directive2.js" type="text/javascript"></script> 
    <!-- endbuild --> 
</body> 

這是我gulpfile.js:

// Generated on 2015-12-16 using generator-angular 0.15.1 
'use strict'; 

var gulp = require('gulp'), 
    usemin = require('gulp-usemin'), 
    wrap = require('gulp-wrap'), 
    connect = require('gulp-connect'), 
    watch = require('gulp-watch'), 
    minifyCss = require('gulp-minify-css'), 
    minifyJs = require('gulp-uglify'), 
    concat = require('gulp-concat'), 
    less = require('gulp-less'), 
    rename = require('gulp-rename'), 
    minifyHTML = require('gulp-minify-html'), 
    zip = require('gulp-zip'); 

var paths = { 
    scripts: 'app/scripts/**/*.*', 
    styles: 'app/styles/**/*.less', 
    custom_css: 'app/styles/**/*.css', 
    custom_fonts: 'fonts/**/*.{ttf,woff,eof,svg}', 
    images: 'app/images/**/*.*', 
    templates: 'app/views/**/*.html', 
    index: 'app/index.html', 
    bower_fonts: 'bower_components/**/*.{ttf,woff,eof,svg}', 
    customstyle:'bower_components/bootstrap/dist/css/bootstrap.min.css' 
}; 

var logerror = function(e){ console.log(e); }; 

/** 
* Handle bower components from index 
*/ 
gulp.task('usemin', function() { 
    return gulp.src(paths.index) 
     .pipe(usemin({ 
      js: [minifyJs().on('error', function(e){ console.log(e); }),   'concat'], 
      css: [minifyCss({keepSpecialComments: 0}), 'concat'] 
     })) 
     .pipe(gulp.dest('dist/')); 
}); 

gulp.task('zip', function() { 
    return gulp.src(['dist/**/*.*', '!dist/dist.zip', '!dist/index.html']) 
     .pipe(zip('dist.zip')) 
     .pipe(gulp.dest('dist/')); 
}); 

/** 
* Copy assets 
*/ 
gulp.task('build-assets', ['copy-bower_fonts', 'custom-less', 'custom- css']); 

gulp.task('copy-bower_fonts', function() { 
    return gulp.src(paths.bower_fonts) 
     .pipe(rename({ 
      dirname: '/fonts' 
     })) 
     .pipe(gulp.dest('dist/')); 
}); 

gulp.task('custom-less', function() { 
    return gulp.src(paths.styles) 
     .pipe(less()) 
     .pipe(gulp.dest('dist/styles')); 
}); 

gulp.task('custom-css', function() { 
    return gulp.src(paths.custom_css) 
     .pipe(minifyCss()) 
     .pipe(concat('custom.min.css')) 
     .pipe(gulp.dest('dist/styles')); 
}); 

gulp.task('copy-templates', function() { 
    return gulp.src(paths.templates) 
     .pipe(minifyHTML().on('error',logerror)) 
     .pipe(gulp.dest('dist/views')); 
}); 

/** 
* Watch custom files 
*/ 
gulp.task('watch', function() { 
    gulp.watch([paths.index], ['usemin']); 
    gulp.watch([paths.customstyle], ['usemin']); 
    gulp.watch([ 'dist/**/*.*', '!dist/dist.zip', '!dist/index.html'], ['zip']); 
}); 

/** 
* Live reload server 
*/ 
gulp.task('webserver', function() { 
    connect.server({ 
     root: 'dist', 
     livereload: true, 
     port: 8888 
    }); 
}); 

gulp.task('livereload', function() { 
    gulp.src(['dist/**/*.*']) 
     .pipe(watch()) 
     .pipe(connect.reload()); 
}); 

/** 
* Gulp tasks 
*/ 
gulp.task('build', ['build-assets','copy-templates', 'usemin']); 
gulp.task('default', ['build', 'zip']); 
gulp.task('run', ['build', 'webserver', 'livereload', 'watch']); 

當我運行默認的任務,我得到這個消息:

TypeError: Path must be a string. Received undefined

如果我從索引中刪除<script src="scripts/directives/directive2/directive2.js" type="text/javascript"></script> gulp任務運行沒有錯誤,我很確定該文件是否存在,url是否正確寫入。

請幫助!

+0

我可以使它發揮作用去除腳本之間的分工組:'<! - endbuild - ><! - build:js({。tmp,app}) - >'我希望它可以幫助某人或任何人解釋我爲什麼發生這種情況 –

+0

你能解決這個問題,因爲我面對同樣的問題,最有可能吞噬圖標,但錯誤日誌並沒有給出太多的信息。任何信息/提示將有幫助 –

+0

@XavitojCheema我回答這個問題,我希望可以幫助你 –

回答

0

我找到的解決方案是通過{mangle:false}爲「吞掉,醜化的構造函數,在我的情況下,在這個崗位更換

gulp.task('usemin', function() { 
    return gulp.src(paths.index) 
     .pipe(usemin({ 
      js: [minifyJs({mangle:false}).on('error', function(e){ console.log(e); }), 'concat'], 
      css: [minifyCss({keepSpecialComments: 0}), 'concat'] 
     })) 
     .pipe(gulp.dest('dist/')); 
}); 

的更多信息:Gulp ngmin + uglify not working properly

相關問題