uni-app使用vue3 vite反向代理报错

发布于 1周前 作者 caililin 来自 Uni-App

uni-app使用vue3 vite反向代理报错

项目信息 详细信息
产品分类 uniapp/H5
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win10
HBuilderX类型 正式
HBuilderX版本号 3.4.7
浏览器平台 Chrome
浏览器版本 版本 100.0.4896.75(正式版本) (64 位)
项目创建方式 HBuilderX

示例代码:

manifest.json设置VUE版本3  

根目录新建vite.config.js文件

import { defineConfig } from 'vite'  

export default defineConfig({  
    server: {  
        port : 3001,  
        proxy: {  
            '/api': {  
                target: 'http://jsonplaceholder.typicode.com',  
                changeOrigin: true,  
                rewrite: (path) => path.replace(/^\/api/, '')  
            },  
        }  
    }  
})

运行时报错

10:26:32.866 正在编译中...  
10:26:33.062 Port 3000 is in use, trying another one...  
10:26:33.064   vite v2.9.5 dev server running at:  
10:26:33.065   > Local: http://localhost:3001/  
10:26:33.067   > Network: use `--host` to expose  
10:26:33.072   ready in 811ms.  
10:26:33.117 The following dependencies are imported but could not be resolved:  
10:26:33.119   vue (imported by E:/flx-code/uni-app-sxrd/main.js)  
10:26:33.121   vuex (imported by E:/flx-code/uni-app-sxrd/store/index.js)  
10:26:33.125 Are they installed?

操作步骤:

同上


预期结果:

不报错

实际结果:

uniapp使用vue3 vite反向代理报错


bug描述:

uniapp使用vue3 vite反向代理报错  
尝试:直接npm i安装 vuevuex这个报错没了,但是App.vue就不能用了...


2 回复

自定义 vite.config 时,必须注册 uni 的插件
import { defineConfig } from “vite”;
import uni from “@dcloudio/vite-plugin-uni”;

/**

  • @type {import(‘vite’).UserConfig}
    */
    export default defineConfig({
    plugins: [uni()],
    });

在使用 uni-appVue 3 结合 Vite 进行开发时,配置反向代理时可能会遇到一些问题。以下是一些常见的错误及其解决方法:

1. 代理配置错误

vite.config.js 中配置代理时,确保代理配置正确。以下是一个基本的代理配置示例:

import { defineConfig } from 'vite';
import uni from '@dcloudio/vite-plugin-uni';

export default defineConfig({
  plugins: [uni()],
  server: {
    proxy: {
      '/api': {
        target: 'http://your-api-server.com',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '')
      }
    }
  }
});

2. 路径重写问题

在代理配置中,rewrite 函数用于重写请求路径。确保路径重写逻辑正确,否则可能会导致请求失败。

3. 跨域问题

如果目标服务器不支持跨域请求,可能会导致请求失败。确保目标服务器允许跨域请求,或者在代理配置中设置 changeOrigin: true

4. 端口冲突

确保 Vite 开发服务器使用的端口没有被其他应用程序占用。可以在 vite.config.js 中指定端口:

server: {
  port: 3000, // 指定端口
  proxy: {
    '/api': {
      target: 'http://your-api-server.com',
      changeOrigin: true,
      rewrite: (path) => path.replace(/^\/api/, '')
    }
  }
}

5. 网络问题

确保你的开发环境可以访问目标服务器。如果网络连接有问题,代理请求也会失败。

6. 控制台错误信息

查看浏览器控制台和终端中的错误信息,通常会有详细的错误提示,帮助你定位问题。

7. 检查 uni-app 版本

确保你使用的 uni-app 版本支持 Vue 3Vite。如果版本不兼容,可能会导致各种问题。

8. 检查 Vite 插件

确保你使用的 Vite 插件与 uni-app 兼容。例如,@dcloudio/vite-plugin-uni 是官方推荐的插件。

9. 重启开发服务器

在修改 vite.config.js 后,确保重启开发服务器以使配置生效。

10. 检查 package.json

确保 package.json 中的依赖项正确安装,并且版本兼容。

示例项目结构

以下是一个简单的项目结构示例:

my-uni-app/
├── src/
   ├── pages/
   ├── App.vue
   └── main.js
├── vite.config.js
├── package.json
└── index.html

示例 vite.config.js

import { defineConfig } from 'vite';
import uni from '@dcloudio/vite-plugin-uni';

export default defineConfig({
  plugins: [uni()],
  server: {
    proxy: {
      '/api': {
        target: 'http://your-api-server.com',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '')
      }
    }
  }
});

示例 package.json

{
  "name": "my-uni-app",
  "version": "1.0.0",
  "scripts": {
    "dev": "vite",
    "build": "vite build"
  },
  "dependencies": {
    "vue": "^3.2.0"
  },
  "devDependencies": {
    "@dcloudio/vite-plugin-uni": "^2.0.0",
    "vite": "^2.0.0"
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!