You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js中安装ssh2-sftp-client失败的解决办法求助

解决ssh2-sftp-client安装失败(g++缺失)的方案

一、修复编译依赖缺失问题

错误提示make: g++: Command not found,说明WSL环境缺少C++编译工具链,执行对应命令安装:

  • 针对Ubuntu/Debian系WSL:
    sudo apt update && sudo apt install build-essential
    
    该包会自动安装gcc、g++、make等基础编译工具。

安装完成后清理缓存,重新执行安装命令:

rm -rf node_modules yarn.lock
yarn add multer-sftp ssh2-sftp-client

二、若上述方法无效,尝试替代方案

替代包推荐

  1. multer-sftp-v2:这是multer-sftp的维护分支,修复了部分依赖兼容性问题
    yarn add multer-sftp-v2 ssh2-sftp-client
    
  2. 手动结合multer与ssh2-sftp-client:跳过multer-sftp,自行实现存储逻辑,示例代码如下:
    const multer = require('multer');
    const Client = require('ssh2-sftp-client');
    const fs = require('fs');
    
    // 先将文件临时存在本地
    const storage = multer.diskStorage({
      destination(req, file, cb) {
        cb(null, '/tmp');
      },
      filename(req, file, cb) {
        cb(null, Date.now() + '-' + file.originalname);
      }
    });
    const upload = multer({ storage });
    
    // 处理上传并转存到SFTP
    app.post('/upload', upload.single('file'), async (req, res) => {
      const sftp = new Client();
      try {
        await sftp.connect({
          host: '你的SFTP地址',
          port: 22,
          username: 'SFTP用户名',
          password: 'SFTP密码' // 也可使用私钥认证
        });
        // 上传到SFTP指定路径
        await sftp.put(req.file.path, `/远程存储目录/${req.file.filename}`);
        // 删除本地临时文件
        fs.unlinkSync(req.file.path);
        res.status(200).send('文件上传成功');
      } catch (err) {
        console.error(err);
        res.status(500).send('上传失败');
      } finally {
        await sftp.end();
      }
    });
    

内容的提问来源于stack exchange,提问作者Ismail_Aj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:12:19