【发布时间】:2020-03-15 20:58:45
【问题描述】:
我正在使用带有basic-ftp 的 Node JS (12.13.0) 和 NPM (6.13.19)。一切正常,当我从 localhost 在我的开发机器上运行代码时,我可以将文件上传到远程 FTP(没有 SSL,我的远程 FTP 不允许这样做)。
生产服务器托管在 Digital Ocean (Ubuntu 18.04.3) 我试图禁用防火墙,因为我认为这可能是问题的原因。我使用了sudo ufw disable,为了确保它被禁用,我使用sudo ufw status 检查当前状态,返回Status: inactive。
这是我的代码
async function uploadImageToFtp(fileName, path) {
const client = new ftp.Client()
client.ftp.verbose = true
try {
await client.access({
host: process.env.FTP_HOST,
user: process.env.FTP_USER,
password: process.env.FTP_PASSWORD,
secure: false
})
await client.uploadFrom(path, "images/bd/" + fileName)
} catch (err) {
console.log(err)
}
client.close()
}
对生产的回应
Connected to EXTERNAL_IP_ADDRESS < 220 server ready - login please Login
security: No encryption
> USER username < 331 password required
> PASS ###
再次在 localhost 上一切正常,我们通过了这一步,开始将文件上传到相同的服务器和凭据。
在此之后,我再也没有收到任何响应,除了我的请求中出现 Bad Gateway 502 超时。
【问题讨论】:
-
尝试将secure改为true!
-
然后我将准备好 220 服务器 - 请登录 > AUTH TLS
-
你在用这个 npm 包吗:github.com/mscdex/node-ftp
-
不,我正在使用npmjs.com/package/basic-ftp :-)
标签: node.js ubuntu npm ftp digital-ocean