代码之家  ›  专栏  ›  技术社区  ›  sbqq

正在加载具有自定义扩展名的资产不起作用

  •  0
  • sbqq  · 技术社区  · 5 年前

    我正在尝试用react native实现我的第一个应用程序,我需要从保存在项目文件夹中的静态文件打开数据库。

    app.json 文件:

    "packagerOpts": {
        "assetExts": ["sqlite", "db"]
    },
    

    接下来,我将尝试导入这个静态文件,其扩展名为.sqlite或.db应用程序.js中的组件 componentDidMount()

    componentDidMount = async () => {
      await Expo.FileSystem.downloadAsync(
        Expo.Asset.fromModule(require("./assets/db/local.db")).uri,
        `${Expo.FileSystem.documentDirectory}SQLite/local.db`
      );
    
      SQLite.openDatabase("local.db");
    };
    

    Unable to resolve "./assets/db/local.db" from "App.js" . 有什么建议吗?

    2 回复  |  直到 5 年前
        1
  •  8
  •   User Rebo Deva    4 年前

    下面的代码来自上面的2个答案

    在项目根目录中:

    const defaultAssetExts = require("metro-config/src/defaults/defaults").assetExts;
    
    module.exports = {
      resolver: {
        assetExts: [
          ...defaultAssetExts,
          // 3D Model formats
          "dae",
          "obj",
          "mtl",
          // sqlite format
          "db",
          "sqlite"
        ]
      }
    };
    

    可选安装metro依赖项: npm i metro-config --save-dev

        2
  •  1
  •   sbqq    5 年前

    我发现世博会有一些错误,但有公关提出/批准了这一个。对于那些迫不及待地等待官方bug修复的人来说,还有一个解决方法:

    module.exports = {
      resolver: {
        assetExts: ["db", "mp3", "ttf"]
      }
    }
    

        3
  •  1
  •   factory universal    5 年前

    转到node\u modules metro config默认值.js将类型扩展到assetExts部分完成~