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

使用@tensorflow/tfjs-react-native加载模型报错:无法解析bin文件路径

问题与解决方案

问题

使用@tensorflow/tfjs-react-native加载模型时出现错误:

Unable to resolve "missing-asset-registry-path" from "assets/model/group1-shard2of2.bin"

相关代码及配置如下:

模型加载代码

import { bundleResourceIO } from "@tensorflow/tfjs-react-native";

// model path
const modelJson = require("../../assets/model/model.json");
const modelWeights = [
  await require("../../assets/model/group1-shard1of2.bin"),
  await require("../../assets/model/group1-shard2of2.bin"),
];

/**
 * loadModel for Android and IOS
 * loading model via bundleResourceIO and assets
 */
export const modelURI = bundleResourceIO(modelJson, modelWeights);

metro.config.js配置

const { getDefaultConfig } = require('metro-config');
module.exports = (async () => {
    const defaultConfig = await getDefaultConfig();
    const { assetExts } = defaultConfig.resolver;
    return {
        resolver: {
            // Add bin to assetExts
            assetExts: [...assetExts, 'bin'],
        }
    };
})();

错误原因及修正

1. 错误核心

  • require是同步方法,不能用await修饰,这会破坏资源加载逻辑
  • 二进制权重文件通过require导入后,返回的是资源引用对象,需要提取uri字段才能被bundleResourceIO正确处理

2. 修正后的模型加载代码

import { bundleResourceIO } from "@tensorflow/tfjs-react-native";

// 同步加载模型JSON和权重文件,提取uri字段
const modelJson = require("../../assets/model/model.json");
const modelWeights = [
  require("../../assets/model/group1-shard1of2.bin").uri,
  require("../../assets/model/group1-shard2of2.bin").uri,
];

export const modelURI = bundleResourceIO(modelJson, modelWeights);

3. 确保配置生效

  • 重启Metro服务,或运行npx react-native start --reset-cache清理缓存,让Metro的assetExts配置生效
  • 检查文件路径:确认assets/model下的文件名(含大小写)与代码引用完全一致
  • 平台额外检查:
    • iOS:在Xcode中确认模型文件已添加到项目资源中
    • Android:确保模型文件放在android/app/src/main/assets/model目录下,同步Gradle

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 04:02:12