2015-11-13 15 views
6

Sto cercando di utilizzare Wiredep in un'attività Gulp per iniettare dipendenze Bower nel mio file index.html. Il seguente task (senza Wiredep) funziona correttamente.Perché Wiredep si verifica un errore con "dest.on non è una funzione" nel mio task gulp?

gulp.task('build', ['copy', 'assets'], function(){ 

    return gulp.src('app/index.html') 
    .pipe(inject(gulp.src(['dist/assets/js/*.js', 'dist/assets/css/*.css'], {read: false}), {relative: true})) 
    .pipe(gulp.dest('dist')); 
}); 

Ora ho provato ad aggiungere Wiredep ad esso:

var wiredep = require('wiredep'); 

gulp.task('build', ['copy', 'assets'], function(){ 

    return gulp.src('app/index.html') 
    .pipe(wiredep()) 
    .pipe(inject(gulp.src(['dist/assets/js/*.js', 'dist/assets/css/*.css'], {read: false}), {relative: true})) 
    .pipe(gulp.dest('dist')); 
}); 

che si traduce in:

[09:45:11] TypeError: dest.on is not a function 
    at DestroyableTransform.Readable.pipe (C:\GIT\myApp\myApp-front\node_module 
s\gulp-debug\node_modules\through2\node_modules\readable-stream\lib\_stream_read 
able.js:533:8) 
    at Gulp.<anonymous> (C:\GIT\myApp\myApp-front\gulpfile.js:38:6) 
    at module.exports (C:\GIT\myApp\myApp-front\node_modules\gulp\node_modules\ 
orchestrator\lib\runTask.js:34:7) 
    at Gulp.Orchestrator._runTask (C:\GIT\myApp\myApp-front\node_modules\gulp\n 
ode_modules\orchestrator\index.js:273:3) 
    at Gulp.Orchestrator._runStep (C:\GIT\myApp\myApp-front\node_modules\gulp\n 
ode_modules\orchestrator\index.js:214:10) 
    at C:\GIT\myApp\myApp-front\node_modules\gulp\node_modules\orchestrator\ind 
ex.js:279:18 
    at finish (C:\GIT\myApp\myApp-front\node_modules\gulp\node_modules\orchestr 
ator\lib\runTask.js:21:8) 
    at C:\GIT\myApp\myApp-front\node_modules\gulp\node_modules\orchestrator\lib 
\runTask.js:52:4 
    at f (C:\GIT\myApp\myApp-front\node_modules\gulp\node_modules\orchestrator\ 
node_modules\end-of-stream\node_modules\once\once.js:17:25) 
    at DestroyableTransform.onend (C:\GIT\myApp\myApp-front\node_modules\gulp\n 
ode_modules\orchestrator\node_modules\end-of-stream\index.js:31:18) 

ho cercato using Wiredep from the command line direttamente ed è gestita bene. Sono in esecuzione su Windows, utilizzando il nodo v4.2.2.

EDIT Se qualcuno incontra lo stesso problema, quindi la soluzione è modificare il compito di:

gulp.task('build', ['copy', 'assets'], function(){ 
    wiredep({src:'dist/index.html'}); 

    return gulp.src('dist/index.html') 
    .pipe(inject(gulp.src(['dist/assets/js/*.js', 'dist/assets/css/*.css'], {read: false}), {relative: true})) 
    .pipe(gulp.dest('dist')); 
}); 

nota, che l'index.html viene copiato nella directory dist prima beeing iniettare.

Mi chiedo ancora perché non posso utilizzare gli stream per collegare le dipendenze.

risposta

14

Mi sono imbattuto in questo problema. È a causa del modo in cui stai importando cablato. Hai bisogno di fare quanto segue in modo che venga convogliato come parte di un flusso di gulp:

var wiredep = require('wiredep').stream; 

Escludendo la parte .stream consente di utilizzare wiredep in funzione al di fuori di un flusso sorso.

Problemi correlati