Node js在生产服务器上部署并运行时无法将文件上传到FTP

问题描述 投票:1回答:1

我正在将Node JS(12.13.0)和NPM(6.13.19)与basic-ftp一起使用。一切正常,当我从本地主机在开发计算机上运行代码时,我可以将文件上传到远程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超时之外,我再也没有收到任何响应。

node.js ubuntu npm ftp digital-ocean
1个回答
0
投票

我不知道该库,但是问题听起来像FTP会话正在活动模式下运行。这通常可能是一个问题,因此,如果它处于主动模式,我建议尝试将您的客户端设置为要求被动模式。

© www.soinside.com 2019 - 2024. All rights reserved.