【问题标题】:React Native read yaml fileReact Native 读取 yaml 文件
【发布时间】:2020-06-21 07:27:03
【问题描述】:

我想在我的 React Native 源代码中读取和解析一个静态 yaml 资源文件(让我们从那里开始),我试过 require('path/to/file.yaml') 无济于事。

我也尝试过使用 npm 的库,例如 read-yamlyaml-loader,所有这些库都无法正确获取 yaml 内容。

使用 json 文件轻而易举,我只需 `require('path/to/file.json') 并立即以漂亮的对象格式获取所有内容。

有没有办法在 react native 中读取 yaml?它只是另一个具有不同格式的文本文件,所以我认为阅读和解析 yaml 文件不会那么难。但是我是来自 C/C++ 背景的 JavaScript 和 React-Native 的新手

【问题讨论】:

    标签: javascript react-native yaml


    【解决方案1】:

    由于似乎没有对 yaml 的内置支持,我相信您需要使用 react-native-fsExpo FileSystem.readAsStringAsync 之类的东西(将文件视为资产)。然后,您应该能够使用诸如 yaml-js 之类的库将字符串解析为已读。

    【讨论】:

    • 问题是它在本地包中,但如果我 require(path/to/it)include(path/to/it) 我永远不会拥有完整的内容(甚至不是字符串,它只是一些奇怪的数字)而如果我 ` require(path/to/json') 我会得到 json 的全部内容...
    • 如回答中所述,bundler 没有对该类型的内置支持,因此requireinclude 只会给你一个参考。当您需要 JSON 时,您得到的不是字符串,而是 JavaScript 对象中评估的 JSON。如果 JSON 格式不正确,会发生什么?错误。要使其与 YAML 一起使用,它必须是受支持的类型,但事实并非如此。检查我包含的链接——requireinclude 都不是文件。
    【解决方案2】:

    您不能直接使用 require 来加载 yaml。 如果您使用世博会:

    1. 使用钩子:
    const [assets, assetsLoadError] = useAssets([
        require(uri)
    ]);
    
    1. 加载资产(没有上面的钩子将无法工作):
    const loadedAsset = await Asset.loadAsync(
        require(uri)
    );
    
    1. 将文件读入字符串var:
    let content;
    try {
        content = await FileSystem.readAsStringAsync(
            loadedAsset.localUri
        );
    } catch (e) {
        console.log({ e });
    }
    
    1. 从字符串中解析 YAML,例如使用 YAML npm 包:
    const parsedYAML = YAML.parse(content);
    

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 2020-06-30
      • 2019-03-13
      • 2015-09-05
      • 2019-01-09
      • 2015-04-22
      • 1970-01-01
      • 2018-05-29
      • 1970-01-01
      相关资源
      最近更新 更多