Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 使用rnpm链接非字体资产_React Native_Assets_React Native Cli - Fatal编程技术网

React native 使用rnpm链接非字体资产

React native 使用rnpm链接非字体资产,react-native,assets,react-native-cli,React Native,Assets,React Native Cli,有很多关于使用rnpm包含字体资源的教程。以下是步骤: 把字体放进去,比如说,/assets/fonts 将以下代码段添加到package.json: "rnpm": { "assets": [ "./assets/fonts", ] } 运行反应本机链接 对于字体资产来说效果很好,但是对于其他类型呢?我需要包含一个文本文件,但对文本文件资源重复上述步骤似乎没有任何效果。我错过了什么?在互联网上没有提及,所以我甚至不确定这在rnpm中是否可行 编辑:更具体地说,我在/asse

有很多关于使用rnpm包含字体资源的教程。以下是步骤:

  • 把字体放进去,比如说,
    /assets/fonts
  • 将以下代码段添加到package.json:

    "rnpm": {
      "assets": [
        "./assets/fonts",
      ]
    }
    
  • 运行
    反应本机链接

  • 对于字体资产来说效果很好,但是对于其他类型呢?我需要包含一个文本文件,但对文本文件资源重复上述步骤似乎没有任何效果。我错过了什么?在互联网上没有提及,所以我甚至不确定这在rnpm中是否可行

    编辑:更具体地说,我在
    /assets/raw
    目录中添加了一个
    文件.txt
    ,并在package.json中的
    rnpm
    配置中的
    /assets/raw
    旁边添加了
    /assets/font
    。运行
    react native link
    后,我希望
    file.txt
    出现在Android项目资产目录(
    /Android/app/src/main/assets
    )和iOS项目的“复制捆绑资源”构建阶段,但没有发生<代码>反应本机链接正常运行,未产生任何错误

    我的最终目标是在应用程序包中包含一个文本文件,并在运行时对其进行访问。另一种选择是用JSON包装文本,但这样一来,文本就会在JS包中增加约25%的大小,这可能不太好。有些人还建议
    react native fs
    读取该文件,但我不确定该放在哪里,这样它就可以在Android和iOS上使用。rnpm知道将Android和iOS的资产放在哪里(以及如何将它们复制到捆绑包中),因此使用它似乎是一种可行的方法,但我无法让它与文本资产一起工作


    有什么想法或建议吗?

    在React-Native CLI中搜索之后,我发现,
    React-Native链接只处理字体。以下是
    /node\u modules/react native/local cli/link/android/copyAssets.js
    中的相关代码:

    /**
     * Copies each file from an array of assets provided to targetPath directory
     *
     * For now, the only types of files that are handled are:
     * - Fonts (otf, ttf) - copied to targetPath/fonts under original name
     */
    module.exports = function copyAssetsAndroid(files, targetPath) {
      const assets = groupFilesByType(files);
    
      (assets.font || []).forEach(asset =>
        fs.copySync(asset, path.join(targetPath, 'fonts', path.basename(asset)))
      );
    };
    
    如您所见,
    groupFilesByType
    按MIME类型(字体、文本等)对所有文件进行分组,但实际上只有字体被复制到项目中


    其他人以前也遇到过这个问题。增加了对视频资源的支持,但没有合并。显然,方法是使用packager。

    您能提供更多关于您尝试过的内容和看到的结果的信息吗?@ChrisGeirman当然,请查看更新。您能进一步说明“使用packager”的含义吗?