为什么 Wiredep 在我的 gulp 任务中出现 "dest.on is not a function" 错误?
Why is Wiredep erroring out with "dest.on is not a function" in my gulp task?
我正在尝试在 Gulp 任务中使用 Wiredep 将 Bower 依赖项注入我的 index.html 文件中。以下任务(没有 Wiredep)运行没问题。
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'));
});
现在我尝试将 Wiredep 添加到其中:
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'));
});
这导致:
[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)
我直接 using Wiredep from the command line 试了一下 运行 没问题。
我正在 运行ning Windows,使用 Node v4.2.2。
编辑
如果有人遇到同样的问题,那么解决方法是将任务更改为:
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'));
});
注意,index.html 在注入之前被复制到 dist 目录。
我仍然想知道为什么我不能使用流来连接依赖项。
我自己 运行 遇到了这个问题。这是因为您导入 wiredep 的方式。您需要执行以下操作才能将其作为 gulp 流的一部分进行管道传输:
var wiredep = require('wiredep').stream;
排除 .stream
部分允许您使用 wiredep 作为 gulp 流之外的函数。
我正在尝试在 Gulp 任务中使用 Wiredep 将 Bower 依赖项注入我的 index.html 文件中。以下任务(没有 Wiredep)运行没问题。
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'));
});
现在我尝试将 Wiredep 添加到其中:
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'));
});
这导致:
[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)
我直接 using Wiredep from the command line 试了一下 运行 没问题。 我正在 运行ning Windows,使用 Node v4.2.2。
编辑 如果有人遇到同样的问题,那么解决方法是将任务更改为:
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'));
});
注意,index.html 在注入之前被复制到 dist 目录。
我仍然想知道为什么我不能使用流来连接依赖项。
我自己 运行 遇到了这个问题。这是因为您导入 wiredep 的方式。您需要执行以下操作才能将其作为 gulp 流的一部分进行管道传输:
var wiredep = require('wiredep').stream;
排除 .stream
部分允许您使用 wiredep 作为 gulp 流之外的函数。