2017-09-11 2 views
1

최근에 GULP를 사용하여 건물을 썼습니다. 그러나 나는 "스크립트"를 실행하려고 시도하면서 벽에 부딪쳤다.GULP tap.js - 속성을 읽을 수 없습니다.

오류

D:\GitHub\ASGARD\baseThemeV2\src>gulp default 
[23:13:03] Using gulpfile D:\GitHub\ASGARD\baseThemeV2\src\gulpfile.js 
[23:13:03] Starting 'lint:js'... 
[23:13:03] Starting 'build:plugins'... 
[23:13:03] Starting 'build:js'... 
[23:13:03] Starting 'build:less'... 
[23:13:03] Starting 'build:images'... 
[23:13:03] Starting 'build:svgs'... 
[23:13:03] Starting 'build:fonts'... 
[23:13:03] Starting 'build:favicon'... 
[23:13:03] Finished 'build:favicon' after 2.19 ms 
[23:13:03] Finished 'build:plugins' after 78 ms 
D:\GitHub\ASGARD\baseThemeV2\src\node_modules\gulp-tap\lib\tap.js:60 
    if (obj instanceof baseStream && !obj._readableState.ended) { 
                 ^

TypeError: Cannot read property 'ended' of undefined 
    at DestroyableTransform.modifyFile (D:\GitHub\ASGARD\baseThemeV2\src\node_modules\gulp-tap\lib\tap.js:60:57) 
    at DestroyableTransform.Transform._read (D:\GitHub\ASGARD\baseThemeV2\src\node_modules\through2\node_modules\readable-stream\lib\_stream_transform.js:182:10) 
    at DestroyableTransform.Transform._write (D:\GitHub\ASGARD\baseThemeV2\src\node_modules\through2\node_modules\readable-stream\lib\_stream_transform.js:170:83) 
    at doWrite (D:\GitHub\ASGARD\baseThemeV2\src\node_modules\through2\node_modules\readable-stream\lib\_stream_writable.js:406:64) 
    at writeOrBuffer (D:\GitHub\ASGARD\baseThemeV2\src\node_modules\through2\node_modules\readable-stream\lib\_stream_writable.js:395:5) 
    at DestroyableTransform.Writable.write (D:\GitHub\ASGARD\baseThemeV2\src\node_modules\through2\node_modules\readable-stream\lib\_stream_writable.js:322:11) 
    at DestroyableTransform.ondata (D:\GitHub\ASGARD\baseThemeV2\src\node_modules\through2\node_modules\readable-stream\lib\_stream_readable.js:612:20) 
    at emitOne (events.js:96:13) 
    at DestroyableTransform.emit (events.js:188:7) 
    at addChunk (D:\GitHub\ASGARD\baseThemeV2\src\node_modules\through2\node_modules\readable-stream\lib\_stream_readable.js:284:12) 

D:\GitHub\ASGARD\baseThemeV2\src> 

꿀꺽 "명령"나는 나는 오류라고 생각되어 사용하고 있습니다 ".pipe (탭 (기능 (파일, t) {"-하지만, 나는 "없습니다"이것을 사용하는 방법을 모르는

// Lint, minify, and concatenate scripts 
gulp.task('build:js', function() { 
    var jsTasks = lazypipe() 
     .pipe(header, banner.full, { package : package }) 
     .pipe(gulp.dest, paths.scripts.output) 
     .pipe(rename, { suffix: '.min' }) 
     .pipe(uglify) 
     .pipe(header, banner.min, { package : package }) 
     .pipe(gulp.dest, paths.scripts.output); 

    return gulp.src(paths.scripts.input) 
     .pipe(plumber()) 
     .pipe(tap(function (file, t) { 
      if (file.isDirectory()) { 
       var name = file.relative + '.js'; 
       return gulp.src(file.path + '/*.js') 
        .pipe(concat(name)) 
        .pipe(jsTasks()); 
      } 
     })) 
     .pipe(jsTasks()); 
}); 

답변

2

을 문제는이 코드 줄에 있습니다.

if (obj instanceof baseStream && !obj._readableState.ended) { 
    obj.on('end', next); 
    return obj.on('data', data = function() { 
    obj.removeListener('end', next); 
    obj.removeListener('data', data); 
    return next(); 
    }); 
} else { 
    return next(); 
} 

_readableStateobj이 없으므로 ended을 읽으려고하면 오류가 발생합니다. 약간의 인터넷 검색을 통해 우리는 비슷한 issue discussed on github을 착륙시킬 수 있습니다. 이는 실제로 _readableState이 스트림에서 필수는 아님을 확인합니다.

스트림에는 _readableState 상태 속성이 필요하지 않습니다. 구현은 stream.Readable로부터 상속을 받으면 얻지 만 그렇지 않으면 그러한 보장이 없습니다. 스트림 -

  • 읽을 수 : Node.js를 내 네 개의 기본 스트림의 종류가 있습니다

    : 우리는 다음 to the Node.js docs에 머리를 경우

    우리는 스트림의 여러 종류가 있다는 것을 발견 데이터를 읽을 수 있습니다 (예 : fs.createReadStream()).

  • 쓰기 가능 - 데이터를 쓸 수있는 스트림 (예 : fs.createWriteStream()).
  • 이중화 - 읽기 가능 및 쓰기 가능 스트림 (예 : net.Socket)입니다.
  • 변환 - 데이터를 쓰고 읽는 동안 수정하거나 변형 할 수있는 이중 스트림 (예 : zlib.createDeflate()). 위로 코드

, obj는 콜백에서 반환 것입니다 :

obj = lambda(inst.file, utils(this, inst.file), inst); 

:

return gulp.src(file.path + '/*.js') 
    .pipe(concat(name)) 
    .pipe(jsTasks()); 

는 스트림 아니지만 읽을 수있는 스트림? 그렇다면 코드가 실패합니다.

꿀꺽 꿀꺽 소리는 비닐 스트림을 사용하므로 아마 "정상적인"스트림으로 변환해야합니다. 이 gulp plugin이 작업을 수행하는 것 같습니다.

P. 또한 tap에서 제공하는 예제를 살펴 보시기 바랍니다. 케이스에서 스트림을 반환해야합니까?

관련 문제