2014-04-28 3 views
1

yeoman의 gulp-webapp generator에서 생성 한 gulpfile.js을 사용하고 있으며 필요에 맞게 수정했습니다. 어떤 이유로 빌드 프로세스 (기본 작업)를 실행하려고 할 때 문제가 계속 발생합니다. 오류는 'html'작업 중에 발생하며 대부분의 오류 참조는`node_modules \ gulp-useref \ index.js '에 있습니다.Gulp-useref에서 오류가 발생했습니다 : "경로는 문자열이어야합니다"

다음
stream.js:94 
    throw er; //Unhandled stream in pipe. 

TypeError: path must be a string 
    at Object.fs.openSync (fs.js:427:18) 
    at Object.fs.readFileSync (fs.js:284:15) 
    at Transform.<anonymous> (C:\dev\project\node_modules\gulp-useref\index.js:54:44) 
    at Array.forEach (native) 
    at Transform.<anonymous> (C:\dev\project\node_modules\gulp-useref\index.js:50:31) 
    at Array.forEach (native) 
    at Transform.<anonymous> (C:\dev\project\node_modules\gulp-useref\index.js:41:36) 
    at Array.forEach (native) 
    at Transform._transform (C:\dev\project\node_modules\gulp-useref\index.js:38:23) 
    at Transform._read (C:\dev\project\node_modules\gulp-useref\node_modules\through2\node_modules\readable-stream\lib\_stream_transform.js:184:10) 
    at Transform._write (C:\dev\project\node_modules\gulp-useref\node_modules\through2\node_modules\readable-stream\lib\_stream_transform.js:172:12) 

는 HTML 작업입니다 : 여기

오류 출력

gulp.task('html', ['styles', 'scripts'], function() { 
    var jsFilter = $.filter('**/*.js'); 
    var cssFilter = $.filter('**/*.css'); 

    return gulp.src(['app/**/*.html','app/**/*.php']) 
     .pipe($.useref.assets()) 
     .pipe(jsFilter) 
     .pipe($.uglify()) 
     .pipe(jsFilter.restore()) 
     .pipe(cssFilter) 
     .pipe($.csso()) 
     .pipe(cssFilter.restore()) 
     .pipe($.useref.restore()) 
     .pipe($.useref()) 
     .pipe(gulp.dest('dist')) 
     .pipe($.size()); 
}); 

답변

7

짧은 답변 : TypeError: path must be a string 링크/스크립트 경로에 문제가 있음을 의미합니다. useref가 가리키는 파일이나 디렉토리를 찾을 수 없습니다.

긴 답변 :
두 가지 문제가있었습니다.

  1. 링크/스크립트 경로는 gulpfile과 관련이 있거나 검색 할 대체 디렉토리가 있어야합니다.
<!-- build:css({.temp,app}) /styles/main.css --> Works 

하지만 경우를 :

<!-- build:css /styles/main.css --> 
<link href="app/styles/base.css"> 
<link href="app/styles/article.css"> 
<!-- endbuild --> 

또는

<!-- build:css(app) /styles/main.css --> 
<link href="/styles/base.css"> 
<link href="/styles/article.css"> 
<!-- endbuild --> 
  1. 보좌관 gulpfile는 다음과 같이 괄호 안에 넣어하도록 요구하는 여러 대체 디렉토리를 사용합니다 단 하나의 alt 디렉토리를 가지고 있고 당신은 그것을 t에 두어야한다. 중괄호를 치면 오류가 발생합니다.

    <!-- build:css({app}) /styles/main.css --> TypeError: path must be a string 
    

    이것은 경로를 C:\path\to\project\{app}\styles\style.css으로 읽고 있기 때문입니다. 이것은 나에게 이상한 행동처럼 보입니다. 나는 그것이 길이에 관계없이 중괄호에 나열된 디렉토리를 반복 할 것이라고 생각한다.

+0

나는이 문제에 대한 답변을 찾고있는 동안 잠시 동안 다른 사람과 자원을 수색 해왔다. 도와 주셔서 감사합니다! – NoR