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

React Native引入IFC文件报错:Unexpected digit after hash token

解决IFC文件加载的SyntaxError问题

问题根源

你把.ifc后缀加到了metro.config.js的sourceExts数组里,Metro会把它当成JavaScript源码文件去解析,但IFC文件的语法(比如开头的#1=)和JS完全不兼容,所以抛出了语法错误。

解决步骤

1. 修正Metro配置

把.ifc从sourceExts移到assetExts里,告诉Metro这是资源文件而非源码:

const { getDefaultConfig } = require('metro-config');

module.exports = (async () => {
  const {
    resolver: { sourceExts, assetExts },
  } = await getDefaultConfig();
  return {
    transformer: {
      babelTransformerPath: require.resolve('react-native-svg-transformer'),
      getTransformOptions: async () => ({
        transform: {
          experimentalImportSupport: false,
          inlineRequires: true,
        },
      }),
    },
    resolver: {
      assetExts: [...assetExts, 'ifc', 'dwg', 'dxf'], // 将ifc添加到资源扩展名列表
      sourceExts: sourceExts.filter(ext => ext !== 'svg').concat('svg'), // 移除sourceExts中的ifc
    },
  };
})();

2. 修正IFC文件加载代码

IFC是资源文件,需要先获取它的本地URL,再用IFCLoader加载,而非直接require当成模块:

import { IFCLoader } from 'three/examples/jsm/loaders/IFCLoader';
import { Asset } from 'expo-asset';
import { GLView } from 'expo-gl';
import * as THREE from 'three';

export function Main() {
  const loadIFC = async (gl) => {
    // 初始化Three.js基础场景
    const scene = new THREE.Scene();
    const renderer = new THREE.WebGLRenderer({ gl });
    const camera = new THREE.PerspectiveCamera(75, gl.drawingBufferWidth / gl.drawingBufferHeight, 0.1, 1000);
    
    // 获取IFC资源的本地URL
    const ifcAsset = Asset.fromModule(require('./test2.ifc'));
    await ifcAsset.downloadAsync();
    const ifcUrl = ifcAsset.localUri;

    // 加载并添加IFC模型到场景
    const ifcLoader = new IFCLoader();
    const ifcModel = await ifcLoader.loadAsync(ifcUrl);
    scene.add(ifcModel);

    // 基础渲染配置
    camera.position.z = 5;
    renderer.render(scene, camera);
  };

  return <GLView style={{ flex: 1 }} onContextCreate={loadIFC} />;
}

3. 重启Metro服务器

修改配置后必须重启Metro才能生效,关闭当前Metro终端窗口,重新运行项目启动命令(比如npx expo start)。

内容的提问来源于stack exchange,提问作者Nilton Schumacher F

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 19:31:23