解决vue vite启动项目报错ERROR: Unexpected “\x88“ in JSON 的问题

如果你在使用vue vite启动项目时遇到了JSON解析异常,有可能是因为项目依赖项中某个文件含有非utf-8编码的字符而导致的。

解决此问题的方法如下:

  1. 在项目的根路径下创建vite.config.js文件,如果该文件已存在则直接修改它,如果没有请参照以下示例内容创建该文件。
const { createServer } = require("vite");

// 导出一个 vite 插件对象
module.exports = {
  configureServer: async ({ app, watcher }) => {
    // 添加预处理钩子,用于在服务启动前进行处理
    watcher.add("**/*.jsx").on("change", async (path) => {
      const content = await fs.promises.readFile(path, "binary");
      const utf8Content = iconv.decode(Buffer.from(content, "binary"), "utf8");
      await fs.promises.writeFile(path, utf8Content);
    });
  },
};

如上配置文件示例所示,我们导出了一个 configureServer 方法,该方法中,watcher.add("**/*.jsx") CRUD 自动为我们监听指定文件类型的变更,每次有文件变更时,都会执行一个回调函数。回调函数的作用是将文件内容从某种二进制编码(比如gbk)转为utf-8,并写回到原始文件。

  1. 在该项目中安装iconv-lite依赖项,是一个纯JavaScript实现的「字符集编解码库」,用于将一种编码格式转换为另一种编码格式。安装方式,直接在终端或控制台输入以下命令:
yarn add iconv-lite
  1. 遗憾的是,我们无法很方便地得知哪些文件是导致项目启动失败的罪魁祸首,因此只能基于经验或借助第三方工具寻找准确的文件。

比如说,你可能会遇到src目录下的某些.vue 文件非utf-8编码,或者某些json等文件非utf-8编码,这些文件都有可能导致ERROR: Unexpected “\x88“ in JSON 的问题。具体的筛查流程可以参考一些常见的编辑器,如VS code,在文件下拉框中提供了文件编码格式的选择,你可以尝试查看一下报错文件的编码方式是否错误。

  1. 找到导致问题的文件后,根据第一步编写的代码解决问题,即修改该文件的编码组成,并写回到原文件。

总结:

通过上述步骤,我们可以解决vue-vite启动项目时遇到Unexpected “\x88“ in JSON 的问题。其中核心方案是通过vite的钩子机制,监听某种文件类型变更,然后自动将该文件的编码转换为utf-8,以期达到项目能正常启动的目的。当然,如果你的项目一开始就是utf-8编码,那么你可以跳过整个过程,直接启动项目。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解决vue vite启动项目报错ERROR: Unexpected “\x88“ in JSON 的问题 - Python技术站

(1)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue中使用vuex的超详细教程

    下面是关于vue中使用vuex的超详细教程,内容主要包括以下几个部分: vuex在vue中的作用及基本概念 在vue中引入vuex 构建vuex的基本结构 如何引用vuex中的数据和方法 示例说明 总结 1. vuex在vue中的作用及基本概念 vuex是一种状态管理模式,用于管理vue应用中的所有组件的状态,将数据交给vuex中心化管理,实现全局统一的数据…

    Vue 2023年5月28日
    00
  • Vue集成three.js并加载glb、gltf、FBX、json模型的场景分析

    下面是针对”Vue集成three.js并加载glb、gltf、FBX、json模型的场景分析”的完整攻略,包括两个示例的说明。 Vue集成three.js并加载模型的场景分析 前言 Three.js是一个基于webgl开发的JavaScript 3D库,它能够让开发人员通过JS创建各种3D场景。同时,Vue则是一个较为流行的JavaScript开发框架,可以…

    Vue 2023年5月28日
    00
  • vue两次赋值页面获取不到的解决

    当使用Vue.js时,有时会出现在两次赋值后页面获取不到这个值的问题。这可能是由于Vue.js的异步更新导致的。以下是解决这个问题的几个方法: 方法一:使用Vue.js提供的异步更新机制 Vue.js提供了一个特殊的$nextTick方法,可以使用它在DOM更新后立即执行代码。因此,可以在重复赋值之后调用此方法,以确保您获取到正确的值。下面是一个示例代码: …

    Vue 2023年5月27日
    00
  • vue如何使用文件流进行下载(new Blob)

    Vue可以使用File API和Blob对象实现文件下载功能。Blob对象表示二进制大对象,可以将文件数据打包为Uint8Array数组或字符串,从而实现文件下载。 以下是使用Blob对象进行文件下载的步骤: 创建Blob对象 可以使用Blob构造函数创建Blob对象,该构造函数接受一个数组、字符串或HTML元素作为参数。例如,传入Uint8Array数组作…

    Vue 2023年5月28日
    00
  • Vue.Js中的$watch()方法总结

    首先,我们需要了解$watch()方法是什么以及它的作用。$watch()是Vue.js中一个重要的观察者模式,在Vue.js中可以通过$watch()方法来监视某个数据对象的变化,一旦发生变化就执行回调函数。下面详细介绍它的用法。 监听对象watch 简单的例子 我们可以通过如下代码创建一个简单的对象,并监听其中一个属性: var data = {mess…

    Vue 2023年5月29日
    00
  • vue3 中 computed 新用法示例小结

    下面是关于”vue3 中 computed 新用法示例小结”的完整攻略: 什么是 computed 在 Vue.js 中,我们可以通过计算属性来简化模板中的表达式,避免过多的逻辑计算,提高代码可维护性。computed 可以自动监听依赖变化,只有当依赖的值发生变化时,才会重新计算返回值。 在 Vue.js 3.0 中,computed 有了几个新的方法和特性…

    Vue 2023年5月28日
    00
  • 关于Node.js中的JXcore打包示例

    下面就来详细讲解“关于Node.js中的JXcore打包示例”的完整攻略。 Node.js中的JXcore打包示例 简介 JXcore是一种基于Node.js的开源项目,主要用于将Node.js项目转化为独立的应用程序,支持Node.js的所有模块和API。使用JXcore可以将原本需要使用Node.js命令行执行的代码打包成二进制文件,方便部署和使用。 安…

    Vue 2023年5月28日
    00
  • vue如何实现对请求参数进行签名

    Vue.js是一种流行的JavaScript前端框架,它能够轻松地处理与后端API的交互和数据传递。在数据传输中,有时需要向后端传递签名的请求参数,以确保数据的完整性和安全性。下面是一个基本的Vue.js签名请求参数的攻略: 步骤1:了解签名原理 根据常见的签名算法,签名通常需要按照一定的规则将请求数据按照指定方式拼接,并使用密钥对其生成签名。后端会根据相同…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部