【问题标题】:Problem with import json to variable in ReactReact中将json导入变量的问题
【发布时间】:2021-10-28 18:14:01
【问题描述】:

我是 React 新手,我正在尝试将选定的 JSON 数据导入并保存在变量中

[...]

const languageToSet = "polish";
const lang = {
    promiseToSetLanguage: function(lang){
        return new Promise((resolve, reject) => {
            import language from `./languages/${languageToSet}_lang.json`
            language = JSON.parse(language)
            if (language.welcome) {
                console.log('Works fine')
                resolve(true)
            } else{
                reject(false)
            }
        })
    }
}
lang.promiseToSetLanguage()

[...]

控制台给我一个错误: "'import' 和 'export' 只能出现在顶层" 但我需要加载用户选择的 JSON 文件。 我使用了 'import' 和 'require' 方法。

感谢您的帮助,最好的问候。

【问题讨论】:

  • 尝试动态导入。语法不同。 import(`./languages/${languageToSet}_lang.json`) 用法类似于const lang = import('...'),然后lang.default 将是文件的默认导出

标签: javascript reactjs json


【解决方案1】:

我认为 fetch 可能是这里的答案.. 尝试使用

return new Promise(async (resolve, reject) => {
            const rawJsonFile = await fetch(`${file_from_user}`);
            const jsonFile = await rawJsonFile.json();
            if (jsonFile.welcome) {
                console.log('Works fine')
                resolve(true)
            } else{
                reject(false)
            }
        })

如果还是不行,你可以随时使用 xhr

【讨论】:

  • 您需要将文件静态托管在网站上才能正常工作。
  • @JohnRuddell 从他在原始代码中的导入语句中,看起来用户从位于网站上的预定义语言文件中选择了一种语言..
  • 它是 javascript 中的本地文件导入,这与对静态托管文件的 fetch 请求完全不同
  • 在这种情况下,require 应该可以解决问题,不是吗?他说他试过了,没用
  • 如果您查看错误消息,'import' and 'export' may only appear at the top level 这就是您将import xxxx from 'xxxx' 写在函数内部而不是文件顶层时会看到的内容。我已经使用动态导入来处理这个确切的用例,你可以更新你的答案以包含它,我会给你一个 +1 :)
猜你喜欢
  • 2020-09-22
  • 1970-01-01
  • 2018-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-15
  • 2023-02-01
相关资源
最近更新 更多