JSON静态导入type声明:assert与with的兼容性问题咨询
正确的JSON导入写法(适配Webpack与浏览器)
1. Webpack环境下的最简方案
因为你用Webpack打包,完全可以移除所有类型声明,直接写:
import PRICE_LIST from '../prices/ArticlePrice.json';
Webpack在编译阶段会自动处理JSON文件,把它转成JS对象导入,这也是为什么你打包后的代码能正常运行——浏览器运行的是已经处理好的代码,根本碰不到原生导入断言的问题。
2. 原生浏览器运行的标准写法
如果你的代码需要在未打包的情况下直接在浏览器跑,现在标准的JSON导入语法是用with断言,注意语法格式:
import PRICE_LIST from '../prices/ArticlePrice.json' with { type: 'json' };
VS Code提示语法错误,是因为你的项目语法配置没跟上ES2023标准(with导入断言是ES2023新增的)。可以在tsconfig.json(用TypeScript的话)里把target设为ES2023,或者在ESLint配置里启用对应语法支持。
3. 关于assert报错的原因
assert { type: 'json' }是早期的导入断言提案,后来被官方废弃并替换成了with语法,新版Opera(基于Chromium内核)已经移除了对assert的支持,所以原生运行时会报错,但Webpack打包时会剥离这部分语法,所以打包后不受影响。
总结
- 只需要Webpack打包场景:用最简导入写法,移除所有断言,完全不影响功能。
- 需要支持原生浏览器运行:用
with断言语法,同时更新项目语法配置消除VS Code的错误提示。
内容的提问来源于stack exchange,提问作者nhaggen
相关产品推荐
相关产品推荐

