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

Orbit-db createInstance报错:Path must be a string问题求助

解决OrbitDB创建实例时的"Path must be a string"错误

问题详情

IPFS初始化完成后,执行const orbitdb = await OrbitDB.createInstance(ipfs);时抛出以下错误:

Uncaught (in promise) TypeError: Path must be a string. Received "12D3KooWByXmww9fsJv46RddyFk4PJDfiuAY315MHQb9jAtyTBfW"
    at assertPath (index.js:29:1)
    at Object.join (index.js:186:1)
    at OrbitDB.createInstance (OrbitDB.js:109:1)
    at async App.js:27:1

当前使用依赖版本:

  • orbit-db: 0.28.6
  • ipfs: 0.63.5
    Webpack 5配置文件config-overrides.js内容如下:
const webpack = require('webpack');
module.exports = function override(config) {
    const fallback = config.resolve.fallback || {};
    Object.assign(fallback, {
        "crypto": require.resolve("crypto-browserify"),
        "stream": require.resolve("stream-browserify"),
        "assert": require.resolve("assert"),
        "http": require.resolve("stream-http"),
        "https": require.resolve("https-browserify"),
        "os": require.resolve("os-browserify"),
        "url": require.resolve("url"),
        "path": require.resolve("path-browserify")
    })
    config.resolve.fallback = fallback;
    config.plugins = (config.plugins || []).concat([
        new webpack.ProvidePlugin({
            process: 'process/browser',
            Buffer: ['buffer', 'Buffer']
        })
    ])
    return config;
}

解决方案

1. 显式指定OrbitDB存储目录

调用createInstance时传入directory参数,用字符串路径覆盖默认生成逻辑,避免path-browserify的断言错误:

const orbitdb = await OrbitDB.createInstance(ipfs, {
  directory: 'orbitdb-local-store' // 任意合法字符串,浏览器环境下会映射到IndexedDB存储
});

2. 调整Webpack路径别名配置

修改config-overrides.js,添加path的别名配置,确保path-browserify被正确识别:

const webpack = require('webpack');
module.exports = function override(config) {
    const fallback = config.resolve.fallback || {};
    Object.assign(fallback, {
        "crypto": require.resolve("crypto-browserify"),
        "stream": require.resolve("stream-browserify"),
        "assert": require.resolve("assert"),
        "http": require.resolve("stream-http"),
        "https": require.resolve("https-browserify"),
        "os": require.resolve("os-browserify"),
        "url": require.resolve("url"),
        "path": require.resolve("path-browserify")
    })
    // 添加path别名
    config.resolve.alias = {
        ...(config.resolve.alias || {}),
        'path': require.resolve('path-browserify')
    };
    config.resolve.fallback = fallback;
    config.plugins = (config.plugins || []).concat([
        new webpack.ProvidePlugin({
            process: 'process/browser',
            Buffer: ['buffer', 'Buffer']
        })
    ])
    return config;
}

3. 升级OrbitDB版本

orbit-db 0.28.x版本在浏览器环境下的路径处理存在兼容性bug,升级到0.29.x及以上版本(需确认与ipfs 0.63.5兼容)可修复该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 02:09:09