ssh2-sftp-client uploadDir Upload error: getLocalStatus: Bad path: ./public

117 阅读1分钟

报错解释

这个错误表明在使用 ssh2-sftp-client 这个Node.js库进行目录上传时遇到了问题。具体来说,是指定的本地路径(./public)不正确或者不存在。

解决方法:

确认当前工作目录:确保你在执行上传操作时的当前工作目录下有一个名为 public 的目录。你可以使用如 process.cwd() 来打印当前工作目录。

修正路径:如果 public 目录位于不同的路径,请提供正确的相对路径或绝对路径。

权限问题:确保你有足够的权限访问指定的 public 目录。

路径格式:如果你在Windows系统上,注意路径可能需要是正确的Windows风格,比如 ".\\public" 或者使用Node.js的 path 模块来构建路径。

示例代码:

const path = require('path');
const SFTPClient = require('ssh2-sftp-client');
const sftp = new SFTPClient();
 
async function uploadPublicDir() {
  try {
    const localPath = path.join(__dirname, 'public'); // 确保路径正确
    await sftp.connect({
      // 你的SSH连接配置
    });
    await sftp.uploadDir(localPath, '/remote/directory/path'); // 远程目录路径
    console.log('Upload successful');
  } catch (err) {
    console.error('Upload error:', err);
  } finally {
    if (sftp.sftp) {
      await sftp.end();
    }
  }
}
 
uploadPublicDir();

确保在调用 uploadDir 方法之前,localPath 是正确的并且确实存在。如果问题依然存在,请检查 ssh2-sftp-client 的文档以确保所有配置都是正确的,并且库版本与你的代码兼容。