/\*\*
\* @file Gulp配置
\*/
'use strict'
letgulp = require('gulp')
letsftp = require('gulp-sftp')
letserverConfig = require('./sftp.config')
gulp.task('server-deploy', () \=> {
returngulp.src(\['dist/\*\*/\*', 'dist/\*.html'\]).pipe(
sftp({
host:serverConfig.host,
user:serverConfig.ssh.userName,
port:serverConfig.ssh.port,
pass:serverConfig.ssh.password,
remotePath:serverConfig.ssh.path
})
)
})
// 部署到服务器
gulp.task('deploy', gulp.series(
'server-deploy',
() \=> {
console.log('Your application is deploying to server successfully')
}))
在Gulp自动化部署的过程中遇到报错:
TypeError: file.pipe is not a function
at D:\Users\Administrator\Desktop\Vue-Blog\node_modules\gulp-sftp\index.js:275:22
at Object.async.whilst (D:\Users\Administrator\Desktop\Vue-Blog\node_modules\gulp-sftp\node_modules\async\lib\async.js:683:13)
at D:\Users\Administrator\Desktop\Vue-Blog\node_modules\gulp-sftp\index.js:238:19
at D:\Users\Administrator\Desktop\Vue-Blog\node_modules\gulp-sftp\index.js:147:17
at SFTP.<anonymous> (D:\Users\Administrator\Desktop\Vue-Blog\node_modules\ssh2\lib\Connection.js:859:9)
at Object.onceWrapper (events.js:308:28)
at SFTP.emit (events.js:219:5)
at SFTP.EventEmitter.emit (domain.js:482:12)
at SFTP._parse (D:\Users\Administrator\Desktop\Vue-Blog\node_modules\ssh2\lib\SFTP\SFTPv3.js:1059:16)
at ChannelStream.<anonymous> (D:\Users\Administrator\Desktop\Vue-Blog\node_modules\ssh2\lib\SFTP\SFTPv3.js:72:10)
Gulp版本为Gulp4,请大佬们指教!
这个错误是由于你试图将一个函数转换为一个管道对象,但这个函数不是对流对象的支持。Gulp4 的默认错误处理是,如果错误是由于错误的调用函数而导致的,它会停止处理任务并显示一个错误消息。
要解决这个问题,你需要确保你的函数是一个对流对象的支持的函数。例如,如果你的函数是一个生成器函数,那么你需要使用 createReadStream
或 createWriteStream
函数来创建流对象。
如果你不确定你的函数是否对流对象支持,你可以尝试以下几种方法来检查:
使用 typeof
操作符检查函数的类型。例如,typeof file.pipe
将返回 object
,表示这是一个对象。
使用 Array.isArray
操作符检查函数是否是一个数组。例如,Array.isArray(file.pipe)
将返回 false
,表示不是一个数组。
使用 typeof function
操作符检查函数的类型。例如,typeof file.pipe === 'function'
将返回 true
,表示是一个函数。
如果以上方法都无法确定函数是否对流对象支持,你可能需要将你的函数转换为对流对象的支持的函数。