我有Node.js应用程序,我试图连接到FTP服务器并列出FTP服务器文件夹中的文件夹/文件。
服务器配置有:TLS / SSL隐式加密
这是我的代码:
async function listFilesInFtpFolder() {
const client = new ftp.Client()
client.ftp.verbose = true;
try {
await client.access({
host: ftpConfig.host,
user: ftpConfig.user,
password: ftpConfig.password,
port: ftpConfig.port,
secure: false
});
// ********************** NOTE **********************
// The execution never reaches here, it gets stuck in the
// ... previous statement until it times out
// ********************** NOTE **********************
console.log('connected');
console.log(await client.list())
}
catch(err) {
console.log(err)
}
client.close()
}
出现此错误:
Listening on port 3001
Connected to 155.66.22.88:6610
Error: Timeout (control socket)
at Socket.<anonymous> (C:\Dev\my-app\node_modules\basic-ftp\dist\FtpContext.js:296:58)
at Object.onceWrapper (events.js:298:28)
at Socket.emit (events.js:209:13)
at Socket._onTimeout (net.js:468:8)
at listOnTimeout (internal/timers.js:531:17)
at processTimers (internal/timers.js:475:7)
执行从未达到这些行:
console.log('connected');
console.log(await client.list())
它在等待访问方法时卡住,直到超时由于某些奇怪的原因,访问方法报告为“已连接”
注意,如果我使用WinSCP(https://winscp.net/)之类的程序连接到此FTP服务器,则可以连接并查看文件夹。但是出于某些奇怪的原因,我无法从nodejs连接。我也尝试了许多FTP库。
似乎Node.js不支持隐式 TLS / SSL。
例如:https://github.com/mscdex/node-ftp/issues/153
您确定您的服务器不支持explicit TLS / SSL吗?
假设您正在使用npm的ftp
模块
根据文件https://www.npmjs.com/package/ftp#methodssecure
选项接受混合类型,请尝试“隐式”
安全-混合-对于控制和数据连接加密均设置为true,'控制'仅用于控制连接加密,
或'implicit'用于隐式加密的控制连接(现代不建议使用此模式,但是通常使用端口990)默认值:false