尝试将本地 json 文件导入脚本时,我在 Safari 中遇到错误。 Chrome 工作正常

问题描述 投票:0回答:1

当我尝试将本地 json 文件作为模块导入时

import translation from "./translation.json" assert { type: "json" };

在 Chrome 中运行良好,但在 Safari 中出现错误:

SyntaxError: Unexpected identifier 'assert'. Expected a ';' following a targeted import declaration.

什么会导致 Safari 中的错误?

我希望导入本地 json 文件并将数据用作脚本中的对象。该脚本在 Chrome 中运行良好,但在 Safari 中无法运行。

javascript safari
1个回答
0
投票

你的问题是因为你在 import 语句中使用了 assert 选项。 Safari 不支持 assert 选项,导致语法错误。

ECMAScript 2020 中添加了断言选项,但许多浏览器尚不支持。此选项允许您为导入的模块选择一种类型。如果导入的模块不是您选择的类型,则会抛出错误。您正在使用 assert 选项来确保您正在导入的文件是一个 JSON 文件。假设你已经确信文件类型是 JSON,那么你甚至不需要 Chrome 中的

assert

为了让你的代码在 Safari 中工作,你可以简单地从 import 语句中删除断言选项。浏览器应该理解 mime 类型是 JSON 并这样解析它。这是应该在所有现代浏览器中工作的修改后的导入语句:

import translation from "./translation.json";

Safari 不支持断言吗?

Compatability Chart

根据上面的图表,是的。但实际上,没有。您可能使用的是旧版本的 macOS,或者您可能没有更新 Safari 浏览器。

如果您使用的是最新版本的 Safari,其他可能性是该功能由于缺乏广泛支持而被禁止。 尽管您可能渴望使用全新的尖端功能;当您尝试支持各种浏览器,尤其是移动浏览器时,它们并不总是最好的。

© www.soinside.com 2019 - 2024. All rights reserved.