为什么用Vite导入JSON文件时报“Unexpected token”错误? 司马瑞玲 提问于 2026-01-26 14:44:31 阅读 62 工具 在Vue组件里用import引入本地JSON文件时突然报错,提示“Unexpected token {”。之前正常运行过,今天改了数据结构就崩了…… 代码是这样的: <script setup> import data from './data.json' console.log(data) </script> JSON文件结构没问题,试过重命名后缀、检查路径都正常。用CommonJS require反而能读到内容,但Vite+ESM方式就是报错,搞不懂咋回事…… JSON导入 我来解答 赞 5 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 2 条解答 端木冰冰 Lv1 Vite 默认不支持直接导入 JSON 文件,需要显式声明类型。 改一下代码:import data from './data.json' assert { type: 'json' } 如果还报错,检查 Vite 版本,升级到最新,或者在 vite.config.js 里加插件支持 JSON 导入。 回复 点赞 2 2026-02-18 07:02 Designer°正毅 Lv1 这个问题其实挺常见的,尤其是用 Vite 的时候。Vite 默认对 JSON 文件的支持确实有点特殊的地方,我来帮你一步步解决。 ### 第一步:确认 Vite 的版本 先检查下你用的 Vite 版本,因为不同版本可能处理方式稍微有点变化。打开终端,运行: npm list vite 如果是 3.x 或更新的版本,基本问题不大,继续往下看。如果是老版本,建议先升级一下: npm install vite@latest ### 第二步:理解报错原因 报错 Unexpected token { 是因为 Vite 默认不会直接将 JSON 文件作为模块导入,除非你显式地告诉它怎么处理。虽然 Vite 支持 JSON 导入,但有时候配置或者缓存的问题会导致它识别不出。 ### 第三步:修改配置文件 在你的项目根目录找到 vite.config.js(如果没有就新建一个),然后加上这段代码: // vite.config.js import { defineConfig } from 'vite' export default defineConfig({ // 确保开启 JSON 模块支持 optimizeDeps: { include: ['./data.json'] // 如果你的 JSON 文件路径不是这个,改成实际路径 } }) 这样做的目的是让 Vite 明确知道你需要把 data.json 当作模块处理。 ### 第四步:清理缓存并重启 有时候 Vite 的缓存会捣乱,导致配置改了也没效果。所以重启之前先清一下缓存: rm -rf node_modules/.vite npm run dev ### 第五步:验证代码 现在回到你的 Vue 组件,重新试试这段代码: <script setup> // 直接引入 JSON 文件 import data from './data.json' // 打印数据看看是否正常加载 console.log(data) </script> 如果一切正常,你应该能在控制台看到 JSON 数据了。 --- ### 补充说明 如果你还是有问题,可以试试以下几点: 1. **检查 JSON 文件内容**:确保没有语法错误,比如多余的逗号、未闭合的括号等。 2. **路径问题**:确认 ./data.json 路径是相对于组件文件的正确位置。 3. **尝试动态导入**:如果静态导入还是不行,可以用动态导入测试一下: const loadJSON = async () => { const data = await import('./data.json') console.log(data.default) // 动态导入时数据通常在 default 属性里 } 最后,如果还是搞不定,把完整的错误信息贴出来,我们再一起看看。这种问题其实挺烦人的,但一步步排查下来总能搞定! 回复 点赞 11 2026-02-01 10:11 加载更多 相关推荐 2 回答 5 浏览 Vite打包库时为什么第三方依赖会被包含进输出文件? 我用Vite的Library模式打包一个React组件库,但发现打包后的文件包含了react-i18next的代码,明明在vite.config里设置了external排除。试过调整optimizeD... 萌新.一鸣 工具 2026-02-18 16:19:26 1 回答 23 浏览 Vite中使用glob导入组件后为什么路径报错? 大家好,我在用Vite+React项目里用glob导入组件时遇到了问题。按照网上的方法写了这样的代码: import { glob } from 'glob'; const com... 诸葛英洁 工具 2026-02-13 12:23:27 2 回答 56 浏览 Vite Library模式打包后为什么多出.eslintrc.js文件? 在用Vite的Library模式打包组件库时,发现生成的dist目录里多了一个.eslintrc.js文件,但配置里没配置要包含它。尝试过设置assetsInclude排除,但还是会出现,这是什么情况... 夏侯瑞娜 前端 2026-01-30 22:07:24 1 回答 48 浏览 为什么我的Vite插件在build时无法修改输出的JS文件内容? 我在用Vite写一个自定义插件,想在构建时给所有JS文件自动添加一段版权注释。按照文档用了transform钩子,开发服务启动时控制台确实打印了修改后的代码,但生成的dist文件里完全没有变化,这是为... 设计师璟春 工具 2026-01-28 00:32:25 1 回答 42 浏览 为什么切换到Vite后Sass配置不生效?Webpack和Vite的CSS处理配置有何不同? 我之前用Webpack配置了Sass,现在迁移到Vite后样式文件报错说找不到变量,但代码明明没改啊。之前在vue.config.js里通过chainWebpack添加了sass-loader,现在换... ❤丽丽 前端 2026-02-18 21:47:33 1 回答 9 浏览 Vite项目使用Sass时提示”Cannot find module ‘sass'”怎么办? 我在Vite项目里新建了一个.sass文件,写了一些嵌套样式后保存时报错,控制台显示:Cannot find module 'sass'。之前按照文档安装了vite-plugin-sass,并在vit... W″春萍 前端 2026-02-17 23:47:22 1 回答 10 浏览 DLL入口文件引用CSS时出现‘Unexpected token’错误怎么办? 我在用webpack的DllPlugin打包常用库时,入口文件里引用了一个CSS文件:.box { border: 1px solid red; }但构建时提示“Unexpected token ‘.... Mr.建利 优化 2026-02-17 13:13:44 2 回答 19 浏览 Vite+React项目中配置别名后无法导入组件,路径报错怎么办? 在用Vite搭建React项目时,我按文档配置了@别名指向src目录,但导入组件时总提示404错误。比如这样写: // vite.config.js import { defineConfig } f... 迷人的晟华 框架 2026-02-14 19:05:26 2 回答 33 浏览 Vite+esbuild打包后React动态导入报错找不到模块? 大家好,我在用Vite和esbuild打包生产环境时遇到了奇怪的问题。React组件里用动态导入加载子组件,在开发环境没问题,但打包后控制台报错"Cannot find module './SubCo... 西门远香 工具 2026-02-14 10:24:34 2 回答 46 浏览 为什么Vite处理Sass比Webpack慢那么多? 我在给旧项目迁移到Vite时发现奇怪的现象,同样的Sass文件用Vite构建反而比原来的Webpack更卡顿。比如这个带变量和嵌套的CSS: :root { --primary: #3498db; -... 设计师奕森 前端 2026-02-10 21:34:31
改一下代码:
import data from './data.json' assert { type: 'json' }如果还报错,检查 Vite 版本,升级到最新,或者在
vite.config.js里加插件支持 JSON 导入。### 第一步:确认 Vite 的版本
先检查下你用的 Vite 版本,因为不同版本可能处理方式稍微有点变化。打开终端,运行:
如果是 3.x 或更新的版本,基本问题不大,继续往下看。如果是老版本,建议先升级一下:
### 第二步:理解报错原因
报错
Unexpected token {是因为 Vite 默认不会直接将 JSON 文件作为模块导入,除非你显式地告诉它怎么处理。虽然 Vite 支持 JSON 导入,但有时候配置或者缓存的问题会导致它识别不出。### 第三步:修改配置文件
在你的项目根目录找到
vite.config.js(如果没有就新建一个),然后加上这段代码:这样做的目的是让 Vite 明确知道你需要把
data.json当作模块处理。### 第四步:清理缓存并重启
有时候 Vite 的缓存会捣乱,导致配置改了也没效果。所以重启之前先清一下缓存:
### 第五步:验证代码
现在回到你的 Vue 组件,重新试试这段代码:
如果一切正常,你应该能在控制台看到 JSON 数据了。
---
### 补充说明
如果你还是有问题,可以试试以下几点:
1. **检查 JSON 文件内容**:确保没有语法错误,比如多余的逗号、未闭合的括号等。
2. **路径问题**:确认
./data.json路径是相对于组件文件的正确位置。3. **尝试动态导入**:如果静态导入还是不行,可以用动态导入测试一下:
最后,如果还是搞不定,把完整的错误信息贴出来,我们再一起看看。这种问题其实挺烦人的,但一步步排查下来总能搞定!