【发布时间】:2020-07-04 03:54:44
【问题描述】:
我正在尝试指示gulp-replace 将我的files 中给定字符串flexes[i][0] 的所有实例替换为flexes[i][1] 或flexes[i][2] 两个值之一。
我的设置
const gulp = require('gulp'),
replace = require('gulp-replace'),
files = {
input: 'input/*.html',
output: 'output/'
},
flexes = [
[
"Old 1",
"New 1A",
"New 1B"
],[
"Old 2",
"New 2A",
"New 2B"
]
]
我的功能
对于所有输入文件,函数应将所有 Old 替换为:
- New A 如果传递的模式参数是 1 或
- 新的 B 如果传递的模式参数是 2
并保存到输出文件夹。
function repla(mode) {
return gulp
.src(files.test_htm)
.pipe(
flexes.forEach(
element => replace(
element[0],
element[mode]
)
)
)
.pipe(gulp.dest(files.test))
}
exports.prev = repla(1)
exports.prod = repla(2)
exports.default = repla(1)
错误
我的解决方案产生了错误
TypeError: Cannot read property 'on' of undefined
at DestroyableTransform.Readable.pipe (/node_modules/readable-stream/lib/_stream_readable.js:564:8)
at repla (/gulpfile.js:39:10)
at default (/node_modules/undertaker/lib/set-task.js:13:15)
at bound (domain.js:426:14)
at runBound (domain.js:439:12)
at asyncRunner (/node_modules/async-done/index.js:55:18)
at processTicksAndRejections (internal/process/task_queues.js:79:11)
我应该如何解决它?
【问题讨论】:
-
forEach 返回未定义。管道正在等待流。
标签: javascript gulp gulp-replace