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

Next.js14部署Vercel遇ipfs-http-client模块缺失错误求助

解决Next.js部署Vercel时ipfs-http-client的Cannot find module './fetch.node'错误

针对你使用ipfs-http-client v60.0.1在Vercel部署Next.js项目时遇到的模块找不到问题,以下是可行的解决配置和方案:

1. 动态导入ipfs-http-client并禁用SSR

由于Vercel构建时的SSR环境无法识别node专属的fetch.node模块,可通过Next.js的动态导入将ipfs客户端限制在浏览器环境运行:

import dynamic from 'next/dynamic';
import { useEffect } from 'react';

// 动态导入并禁用服务端渲染
const createIpfsClient = dynamic(
  () => import('ipfs-http-client').then(mod => mod.create),
  { ssr: false }
);

// 在浏览器环境初始化客户端
useEffect(() => {
  const initClient = async () => {
    const client = createIpfsClient({
      url: 'https://ipfs.infura.io:5001/api/v0',
      headers: { authorization: auth },
    });
    // 后续业务逻辑处理
  };
  initClient();
}, [auth]);

2. 配置Webpack别名替换node模块

在next.config.js中添加Webpack配置,将./fetch.node替换为浏览器兼容的./fetch.browser:

const nextConfig = {
  webpack: (config) => {
    config.resolve.alias['./fetch.node'] = './fetch.browser';
    return config;
  },
};

module.exports = nextConfig;

3. 调整ipfs-http-client版本

v60.0.1存在多环境适配问题,可尝试:

  • 降级到v59.x版本(如ipfs-http-client@59.0.0)
  • 升级到v62+稳定版本,该版本修复了部分环境兼容性bug

4. 迁移IPFS操作到API路由

将IPFS的上传、数据获取逻辑移至Next.js的API路由(pages/api/或app/api/目录),在服务端环境初始化ipfs客户端,客户端通过调用API接口间接操作IPFS:

示例API路由(pages/api/ipfs.js):

import { create as ipfsHttpClient } from 'ipfs-http-client';

export default async function handler(req, res) {
  const auth = req.headers.authorization;
  const client = ipfsHttpClient({
    url: 'https://ipfs.infura.io:5001/api/v0',
    headers: { authorization: auth },
  });
  
  // 处理IPFS请求(如上传文件、获取数据)
  // ...
  
  res.status(200).json({ /* 返回处理结果 */ });
}

客户端通过fetch('/api/ipfs', { method: 'POST', headers: { authorization: auth }, body: ... })调用该接口即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 07:32:40